diff --git a/docs/docs/.vuepress/config.js b/docs/docs/.vuepress/config.js index 8142c09a..3159be56 100644 --- a/docs/docs/.vuepress/config.js +++ b/docs/docs/.vuepress/config.js @@ -25,7 +25,6 @@ module.exports = context => config({ cacheHTML: false, }, sidebarDepth: 2, - lastUpdated: '上次更新', hostname: 'https://hcode.top', repo: 'HimitZH/HOJ', pageInfo: false, @@ -37,10 +36,10 @@ module.exports = context => config({ footnote: true, tex: true, }, - docsRepo: 'HimitZH/HOJ/docs', - docsBranch: 'docs', + docsRepo: 'HimitZH/HOJ', + docsBranch: 'master', + docsDir:'docs/docs', editLinks: true, - editLinkText: '文档有锅?点我修复', displayAllHeaders: true, smoothScroll: true, sidebar: [ diff --git a/docs/docs/.vuepress/dist/404.html b/docs/docs/.vuepress/dist/404.html deleted file mode 100644 index b702256e..00000000 --- a/docs/docs/.vuepress/dist/404.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - HOJ - - - - - - - - - - - - - - -
Looks like we've got some broken links.
Take me home
- - - diff --git a/docs/docs/.vuepress/dist/article/index.html b/docs/docs/.vuepress/dist/article/index.html deleted file mode 100644 index 62f86ca0..00000000 --- a/docs/docs/.vuepress/dist/article/index.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - HOJ - - - - - - - - - - - - - - - - - - - - -
- - - diff --git a/docs/docs/.vuepress/dist/assets/css/0.styles.26db984f.css b/docs/docs/.vuepress/dist/assets/css/0.styles.26db984f.css deleted file mode 100644 index 5c9845bc..00000000 --- a/docs/docs/.vuepress/dist/assets/css/0.styles.26db984f.css +++ /dev/null @@ -1,5 +0,0 @@ -#message-container{position:fixed;top:4.6rem;left:0;right:0;z-index:100;text-align:center}#message-container .message{display:inline-block;padding:8px 10px;border-radius:3px;box-shadow:0 0 10px 0 var(--box-shadow-color,#bbb);background:var(--bgcolor,#fff);color:var(--text-color,#333);font-size:14px;transition:height .2s ease-in-out,margin .2s ease-in-out}#message-container .message.move-in{-webkit-animation:message-move-in .3s ease-in-out;animation:message-move-in .3s ease-in-out}#message-container .message.move-out{-webkit-animation:message-move-out .3s ease-in-out;animation:message-move-out .3s ease-in-out;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}#message-container .message svg{position:relative;bottom:-.125em;margin-right:5px}@-webkit-keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}.copy-code-button{background-color:transparent;border-width:0;cursor:pointer;width:32px;height:32px;padding:7px 8px;border-radius:50%;color:#fff;background:#339af0;outline:none}.copy-code-button:hover{cursor:pointer!important;background:#228be6}div[class*=language-] .copy-code-button{position:absolute;right:-14px;bottom:-14px;z-index:100}@media (max-width:419px){div[class*=language-] .copy-code-button{right:-2px;border-top-right-radius:50% 20%;border-bottom-right-radius:50% 20%}}.copy-code-button .icon-copy-code{width:100%;height:100%}@font-face{font-family:Crimson;src:url(data:font/truetype;charset=utf-8;base64,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) format("truetype");font-weight:400;font-style:normal}:root{--balloon-border-radius:2px;--balloon-color:rgba(16,16,16,0.95);--balloon-text-color:#fff;--balloon-font-size:12px;--balloon-move:4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;white-space:nowrap}[aria-label][data-balloon-pos]:after,[aria-label][data-balloon-pos]:before{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;position:absolute;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top:5px solid var(--balloon-color);content:""}[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-visible]:before{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:after,[aria-label][data-balloon-pos][data-balloon-blunt]:before{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after,[aria-label][data-balloon-pos][data-balloon-pos^=up]:before{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:after,[aria-label][data-balloon-pos][data-balloon-pos=up]:before{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after,[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{top:100%;transform:translateY(calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom:5px solid var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move)*-1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left:5px solid var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move)*-1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right:5px solid var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width:768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}.theme-default-content:not(.custom){max-width:820px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:1.5rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1rem 1.5rem}}body,html{padding:0;margin:0;background:var(--bgcolor)}body{font-family:Georgia Pro,Crimson,Georgia,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,STHeiti,Microsoft YaHei,SimSun,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-display:optional;font-size:16px;color:var(--text-color);min-height:100vh;-webkit-tap-highlight-color:transparent}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none;overflow-wrap:break-word}a,p a code{color:var(--accent-color)}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:var(--light-grey);border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:.5rem}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-3rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}.theme-default-content:not(.custom)>ol p,.theme-default-content:not(.custom)>p,.theme-default-content:not(.custom)>ul p{text-align:justify;word-break:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow-wrap:break-word}@media (max-width:419px){.theme-default-content:not(.custom)>ol p,.theme-default-content:not(.custom)>p,.theme-default-content:not(.custom)>ul p{text-align:left}}h1{font-size:2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid var(--border-color)}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0;transition:opacity .2s}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid var(--border-color)}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background:#f6f8fa}td,th{border:1px solid var(--grey14);padding:.6em 1em}.theme-dark tr:nth-child(2n){background:#252322}.theme-dark td,.theme-dark th{border:1px solid var(--grey12)}body,body.theme-light{--text-color:#242424;--bgcolor:#fff;--bgcolor-light:#f8f8f8;--border-color:#eaecef;--code-bgcolor:#ecf4fa;--arrow-bgcolor:#ccc;--box-shadow-color:#f0f1f2;--card-shadow-color:rgba(0,0,0,0.15);--text-color-l10:#3a3a3a;--text-color-l20:#505050;--text-color-l25:#5b5b5b;--text-color-l40:#7c7c7c;--black:#000;--dark-grey:#666;--light-grey:#999;--white:#fff;--grey3:#333;--grey12:#bbb;--grey14:#eee}body.theme-light{--bgcolor-blur:hsla(0,0%,100%,0.9)}body.theme-dark{--text-color:#9e9e9e;--bgcolor:#1e1e1e;--bgcolor-light:#272727;--bgcolor-blur:rgba(30,30,30,0.9);--border-color:#302d28;--code-bgcolor:#282c34;--arrow-bgcolor:#333;--box-shadow-color:#0f0e0d;--card-shadow-color:rgba(0,0,0,0.3);--text-color-l10:#a8a8a8;--text-color-l20:#b1b1b1;--text-color-l25:#b6b6b6;--text-color-l40:#c5c5c5;--black:#fff;--dark-grey:#999;--light-grey:#666;--white:#000;--grey3:#ccc;--grey12:#333;--grey14:#111}.theme-default-content code{color:var(--text-color-l20);padding:.25rem .5rem;margin:0;font-size:.85em;border-radius:3px;overflow-wrap:break-word}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:var(--accent-color)}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background:var(--code-bgcolor);border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:var(--grey3);padding:0;background:transparent!important;border-radius:0}div[class*=language-]{position:relative;background:var(--code-bgcolor);border-radius:6px}div[class*=language-].line-numbers-mode{padding-left:2.5rem}div[class*=language-] .highlight-lines{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-] pre[class*=language-] code,div[class*=language-] pre code{position:relative!important}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;top:0;left:0;display:block;width:2.5rem;height:100%}div[class*=language-].line-numbers-mode pre{vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;left:0;width:2.5rem;text-align:center;padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number,div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:2.5rem;height:100%;border-radius:6px 0 0 6px;background:var(--code-bgcolor)}@media (max-width:419px){div[class*=language-].line-numbers-mode:after{border-radius:0}}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}div[class~=language-stylus]:before{content:"styl"}body.theme-light .theme-default-content code,body:not(.theme-dark) .theme-default-content code{background:hsla(0,0%,49.8%,.12)}body.theme-light code[class*=language-],body.theme-light pre[class*=language-],body:not(.theme-dark) code[class*=language-],body:not(.theme-dark) pre[class*=language-]{color:#000;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}body.theme-light code[class*=language-]::-moz-selection,body.theme-light code[class*=language-] ::-moz-selection,body.theme-light pre[class*=language-]::-moz-selection,body.theme-light pre[class*=language-] ::-moz-selection,body:not(.theme-dark) code[class*=language-]::-moz-selection,body:not(.theme-dark) code[class*=language-] ::-moz-selection,body:not(.theme-dark) pre[class*=language-]::-moz-selection,body:not(.theme-dark) pre[class*=language-] ::-moz-selection{background:#b3d4fc}body.theme-light code[class*=language-]::selection,body.theme-light code[class*=language-] ::selection,body.theme-light pre[class*=language-]::selection,body.theme-light pre[class*=language-] ::selection,body:not(.theme-dark) code[class*=language-]::selection,body:not(.theme-dark) code[class*=language-] ::selection,body:not(.theme-dark) pre[class*=language-]::selection,body:not(.theme-dark) pre[class*=language-] ::selection{background:#b3d4fc}body.theme-light pre[class*=language-],body:not(.theme-dark) pre[class*=language-]{overflow:auto}body.theme-light :not(pre)>code[class*=language-],body.theme-light pre[class*=language-],body:not(.theme-dark) :not(pre)>code[class*=language-],body:not(.theme-dark) pre[class*=language-]{background:#f5f2f0}body.theme-light :not(pre)>code[class*=language-],body:not(.theme-dark) :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}body.theme-light .token.cdata,body.theme-light .token.comment,body.theme-light .token.doctype,body.theme-light .token.prolog,body:not(.theme-dark) .token.cdata,body:not(.theme-dark) .token.comment,body:not(.theme-dark) .token.doctype,body:not(.theme-dark) .token.prolog{color:#708090}body.theme-light .token.punctuation,body:not(.theme-dark) .token.punctuation{color:#5f6364}body.theme-light .token.boolean,body.theme-light .token.constant,body.theme-light .token.deleted,body.theme-light .token.function-name,body.theme-light .token.number,body.theme-light .token.property,body.theme-light .token.symbol,body.theme-light .token.tag,body:not(.theme-dark) .token.boolean,body:not(.theme-dark) .token.constant,body:not(.theme-dark) .token.deleted,body:not(.theme-dark) .token.function-name,body:not(.theme-dark) .token.number,body:not(.theme-dark) .token.property,body:not(.theme-dark) .token.symbol,body:not(.theme-dark) .token.tag{color:#c92c2c}body.theme-light .token.attr-name,body.theme-light .token.builtin,body.theme-light .token.char,body.theme-light .token.function,body.theme-light .token.inserted,body.theme-light .token.selector,body.theme-light .token.string,body:not(.theme-dark) .token.attr-name,body:not(.theme-dark) .token.builtin,body:not(.theme-dark) .token.char,body:not(.theme-dark) .token.function,body:not(.theme-dark) .token.inserted,body:not(.theme-dark) .token.selector,body:not(.theme-dark) .token.string{color:#2f9c0a}body.theme-light .token.entity,body.theme-light .token.operator,body.theme-light .token.url,body.theme-light .token.variable,body:not(.theme-dark) .token.entity,body:not(.theme-dark) .token.operator,body:not(.theme-dark) .token.url,body:not(.theme-dark) .token.variable{color:#a67f59}body.theme-light .token.atrule,body.theme-light .token.attr-value,body.theme-light .token.class-name,body.theme-light .token.keyword,body:not(.theme-dark) .token.atrule,body:not(.theme-dark) .token.attr-value,body:not(.theme-dark) .token.class-name,body:not(.theme-dark) .token.keyword{color:#1990b8}body.theme-light .token.important,body.theme-light .token.regex,body:not(.theme-dark) .token.important,body:not(.theme-dark) .token.regex{color:#e90}body.theme-light .language-css .token.string,body.theme-light .style .token.string,body:not(.theme-dark) .language-css .token.string,body:not(.theme-dark) .style .token.string{color:#a67f59}body.theme-light .token.important,body:not(.theme-dark) .token.important{font-weight:400}body.theme-light .token.bold,body:not(.theme-dark) .token.bold{font-weight:700}body.theme-light .token.italic,body:not(.theme-dark) .token.italic{font-style:italic}body.theme-light .token.entity,body:not(.theme-dark) .token.entity{cursor:help}body.theme-light .token.namespace,body:not(.theme-dark) .token.namespace{opacity:.7}body.theme-light div[class*=language-] .highlight-lines .highlighted,body:not(.theme-dark) div[class*=language-] .highlight-lines .highlighted{background:#d7e9f7}body.theme-light div[class*=language-] pre,body.theme-light div[class*=language-] pre[class*=language-],body:not(.theme-dark) div[class*=language-] pre,body:not(.theme-dark) div[class*=language-] pre[class*=language-]{background:transparent}body.theme-light div[class*=language-]:before,body:not(.theme-dark) div[class*=language-]:before{color:rgba(0,0,0,.4)}body.theme-light div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before,body:not(.theme-dark) div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{background:#d7e9f7}body.theme-light div[class*=language-].line-numbers-mode .line-numbers-wrapper,body:not(.theme-dark) div[class*=language-].line-numbers-mode .line-numbers-wrapper{color:rgba(0,0,0,.3)}body.theme-light div[class*=language-].line-numbers-mode:after,body:not(.theme-dark) div[class*=language-].line-numbers-mode:after{border-right:1px solid #c2def3}body.theme-light .code-group-nav,body:not(.theme-dark) .code-group-nav{background-color:#c2def3}body.theme-light .code-group-nav-tab:hover,body:not(.theme-dark) .code-group-nav-tab:hover{background-color:#d7e9f7}body.theme-light .code-group-nav-tab.active,body:not(.theme-dark) .code-group-nav-tab.active{border-bottom:0;background-color:#ecf4fa}body.theme-light .code-group-nav-tab.active:before,body:not(.theme-dark) .code-group-nav-tab.active:before{background:radial-gradient(12px at left top,transparent 50%,#ecf4fa 0)}body.theme-light .code-group-nav-tab.active:after,body:not(.theme-dark) .code-group-nav-tab.active:after{background:radial-gradient(12px at right top,transparent 50%,#ecf4fa 0)}body.theme-dark .theme-default-content code{background:var(--grey12)}body.theme-dark code[class*=language-],body.theme-dark pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}body.theme-dark pre[class*=language-]{overflow:auto}body.theme-dark :not(pre)>code[class*=language-],body.theme-dark pre[class*=language-]{background:#2d2d2d}body.theme-dark :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}body.theme-dark .token.block-comment,body.theme-dark .token.cdata,body.theme-dark .token.comment,body.theme-dark .token.doctype,body.theme-dark .token.prolog{color:#999}body.theme-dark .token.punctuation{color:#ccc}body.theme-dark .token.attr-name,body.theme-dark .token.deleted,body.theme-dark .token.namespace,body.theme-dark .token.tag{color:#e2777a}body.theme-dark .token.function-name{color:#6196cc}body.theme-dark .token.boolean,body.theme-dark .token.function,body.theme-dark .token.number{color:#f08d49}body.theme-dark .token.class-name,body.theme-dark .token.constant,body.theme-dark .token.property,body.theme-dark .token.symbol{color:#f8c555}body.theme-dark .token.atrule,body.theme-dark .token.builtin,body.theme-dark .token.important,body.theme-dark .token.keyword,body.theme-dark .token.selector{color:#cc99cd}body.theme-dark .token.attr-value,body.theme-dark .token.char,body.theme-dark .token.regex,body.theme-dark .token.string,body.theme-dark .token.variable{color:#7ec699}body.theme-dark .token.entity,body.theme-dark .token.operator,body.theme-dark .token.url{color:#67cdcc}body.theme-dark .token.bold,body.theme-dark .token.important{font-weight:700}body.theme-dark .token.italic{font-style:italic}body.theme-dark .token.entity{cursor:help}body.theme-dark .token.inserted{color:green}body.theme-dark div[class*=language-] .highlight-lines .highlighted{background:#1d2128}body.theme-dark div[class*=language-] pre,body.theme-dark div[class*=language-] pre[class*=language-]{background:transparent}body.theme-dark div[class*=language-]:before{color:hsla(0,0%,100%,.4)}body.theme-dark div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{background:#1d2128}body.theme-dark div[class*=language-].line-numbers-mode .line-numbers-wrapper{color:hsla(0,0%,100%,.3)}body.theme-dark div[class*=language-].line-numbers-mode:after{border-right:1px solid #191d22}body.theme-dark .code-group-nav{background-color:#191d22}body.theme-dark .code-group-nav-tab:hover{background-color:#252a32}body.theme-dark .code-group-nav-tab.active{border-bottom:0;background-color:#282c34}body.theme-dark .code-group-nav-tab.active:before{background:radial-gradient(12px at left top,transparent 50%,#282c34 0)}body.theme-dark .code-group-nav-tab.active:after{background:radial-gradient(12px at right top,transparent 50%,#282c34 0)}.theme-container:not(.has-navbar) .theme-default-content:not(.custom)>h1,.theme-container:not(.has-navbar) h2,.theme-container:not(.has-navbar) h3,.theme-container:not(.has-navbar) h4,.theme-container:not(.has-navbar) h5,.theme-container:not(.has-navbar) h6{margin-top:1.5rem;padding-top:0}@media (max-width:419px){h1{font-size:1.7rem}h2{font-size:1.5rem}h3{font-size:1.3rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.iconfont{font-weight:400}[aria-label][data-balloon-pos]{cursor:help}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track-piece{background:rgba(0,0,0,.1);-webkit-border-radius:6px}::-webkit-scrollbar-thumb:vertical{height:6px;background:var(--accent-color);-webkit-border-radius:6px}::-webkit-scrollbar-thumb:horizontal{width:6px;background:var(--accent-color);-webkit-border-radius:6px}.theme-red #nprogress .bar{background:#e74c3c}.theme-red #nprogress .peg{box-shadow:0 0 10px #e74c3c,0 0 5px #e74c3c}.theme-red #nprogress .spinner-icon{border-color:#e74c3c}.theme-blue #nprogress .bar{background:#3498db}.theme-blue #nprogress .peg{box-shadow:0 0 10px #3498db,0 0 5px #3498db}.theme-blue #nprogress .spinner-icon{border-color:#3498db}.theme-green #nprogress .bar{background:#3eaf7c}.theme-green #nprogress .peg{box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c}.theme-green #nprogress .spinner-icon{border-color:#3eaf7c}.theme-orange #nprogress .bar{background:#f39c12}.theme-orange #nprogress .peg{box-shadow:0 0 10px #f39c12,0 0 5px #f39c12}.theme-orange #nprogress .spinner-icon{border-color:#f39c12}.theme-purple #nprogress .bar{background:#8e44ad}.theme-purple #nprogress .peg{box-shadow:0 0 10px #8e44ad,0 0 5px #8e44ad}.theme-purple #nprogress .spinner-icon{border-color:#8e44ad}.navbar .search-box{height:calc(2rem + 4px);margin-left:.25rem}.navbar .search-box input{margin-top:1px;margin-bottom:1px;border-color:transparent;border-radius:.25em}@media (max-width:719px){.navbar .search-box input{left:0;background-color:transparent}}@media (min-width:959px){.navbar .search-box input{background-color:#efeef4}.navbar .search-box input:focus{width:15rem}}.navbar .search-box input:focus{background-color:var(--bgcolor);border-color:var(--accent-color)}.theme-dark .navbar .search-box input{color:var(--text-color);background-color:transparent}@media (min-width:959px){.theme-dark .navbar .search-box input{background-color:#353535!important;border-color:var(--border-color)}}.theme-dark .navbar .search-box input:focus{background-color:#353535!important}.theme-dark .navbar .search-box .suggestion a{color:#676767}.theme-dark .navbar .search-box .suggestion.focused{background:#0c0b0a}.theme-dark .navbar .search-box .suggestion.focused a{color:var(--accent-color);border-color:var(--accent-color)}.theme-dark .navbar .search-box .suggestions{border-color:var(--border-color);background:var(--white)}.navbar #docsearch button{background-color:transparent;border-color:transparent;border-radius:.25em}.mobile .navbar #docsearch button{left:0;background-color:transparent}@media (min-width:959px){.navbar #docsearch button{background-color:#efeef4}}.navbar #docsearch button:focus{background-color:var(--bgcolor);border-color:var(--accent-color)}.theme-dark .navbar #docsearch button{color:var(--text-color)}@media (min-width:959px){.theme-dark .navbar #docsearch button{background-color:#353535!important;border-color:var(--border-color)}}.theme-dark .navbar #docsearch button:focus{background-color:#353535!important}body{--accent-color:#3eaf7c;--accent-color-l10:#4abf8a;--accent-color-d10:#389d70;--accent-color-a15:rgba(62,175,124,0.15)}body.theme-red{--accent-color:#e74c3c;--accent-color-l10:#e95e50;--accent-color-d10:#e43422;--accent-color-a15:rgba(231,76,60,0.15)}body.theme-blue{--accent-color:#3498db;--accent-color-l10:#48a2df;--accent-color-d10:#258bcf;--accent-color-a15:rgba(52,152,219,0.15)}body.theme-green{--accent-color:#3eaf7c;--accent-color-l10:#4abf8a;--accent-color-d10:#389d70;--accent-color-a15:rgba(62,175,124,0.15)}body.theme-orange{--accent-color:#f39c12;--accent-color-l10:#f4a62a;--accent-color-d10:#e08e0b;--accent-color-a15:rgba(243,156,18,0.15)}body.theme-purple{--accent-color:#8e44ad;--accent-color-l10:#9c51bb;--accent-color-d10:#803d9c;--accent-color-a15:rgba(142,68,173,0.15)}.back-to-top{background-color:transparent;border-width:0;cursor:pointer;position:fixed!important;right:1rem;bottom:4rem;z-index:10;width:3rem;height:3rem;padding:8px}.back-to-top:hover{color:var(--accent-color-l25,#68c99d);cursor:pointer}.back-to-top svg{width:100%;border-radius:50%;background:var(--bgcolor,#fff);color:var(--accent-color,#3eaf7c);overflow:hidden;fill:currentcolor}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.badge[data-v-7b453e57]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:var(--white,#fff);background:#42b983}.badge.green[data-v-7b453e57],.badge.tip[data-v-7b453e57]{background:#42b983}.badge.error[data-v-7b453e57]{background:#da5961}.badge.warn[data-v-7b453e57],.badge.warning[data-v-7b453e57],.badge.yellow[data-v-7b453e57]{background:#e7c000}.badge.grey[data-v-7b453e57]{background:#c2cbd2}.badge+.badge[data-v-7b453e57]{margin-left:.3em}.table-of-contents .badge[data-v-7b453e57]{vertical-align:middle}.breadcrumb{max-width:820px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.breadcrumb{padding:1.5rem}}@media (max-width:419px){.breadcrumb{padding:1rem 1.5rem}}.theme-default-content:not(.custom)>:first-child{margin-top:0}.theme-default-content:not(.custom) h1:first-child,.theme-default-content:not(.custom) h2:first-child,.theme-default-content:not(.custom) h3:first-child,.theme-default-content:not(.custom) h4:first-child,.theme-default-content:not(.custom) h5:first-child,.theme-default-content:not(.custom) h6:first-child{margin-top:-3.1rem!important;padding-top:3.6rem!important}@media (max-width:719px){.theme-default-content:not(.custom) h1:first-child,.theme-default-content:not(.custom) h2:first-child,.theme-default-content:not(.custom) h3:first-child,.theme-default-content:not(.custom) h4:first-child,.theme-default-content:not(.custom) h5:first-child,.theme-default-content:not(.custom) h6:first-child{margin-top:-2.75rem!important;padding-top:3.25rem!important}}.breadcrumb{position:relative;margin-top:4.1rem;margin-bottom:-3.1rem;padding-top:.2rem;padding-bottom:.2rem;font-size:15px;z-index:2}@media (max-width:719px){.breadcrumb{margin-top:3.75rem;margin-bottom:-2.75rem;font-size:14px}}@media (max-width:419px){.breadcrumb{font-size:12.8px}}.breadcrumb.disable{padding-bottom:1.3em}.breadcrumb ol{margin:0;padding-left:0;list-style:none}.breadcrumb li{display:inline-block}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li:last-child a{padding-right:0}.breadcrumb li.is-active a{color:var(--light-grey,#999);cursor:default;pointer-events:none}.breadcrumb li+li:before{color:var(--light-grey,#999);content:"/"}.breadcrumb a{display:inline-block;padding:0 .5em;line-height:2}.breadcrumb a:before{position:relative;bottom:.125rem;margin-right:.25em}.breadcrumb a:hover{color:var(--accent-color-l10,#4abf8a)}.theme-dark .breadcrumb a:hover{color:var(--accent-color-d10,#389d70)}.code-group-nav{display:flex;margin:.85rem 0 calc(-1.7rem - 7px);padding:0 0 calc(1.7rem - 7px);border-top-left-radius:6px;border-top-right-radius:6px;background-color:#191d22;list-style:none}@media (max-width:419px){.code-group-nav{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0}}.code-group-nav-tab{position:relative;border:0;padding:6px 10px;cursor:pointer;border-top-left-radius:6px;border-top-right-radius:6px;background-color:transparent;color:var(--text-color,#242424);font-family:Arial;font-size:.85em;font-weight:600;line-height:1.4}.code-group-nav-tab:hover{background-color:#252a32}.code-group-nav-tab:after,.code-group-nav-tab:before{position:absolute;z-index:1;content:" ";bottom:0;width:6px;height:6px}.code-group-nav-tab:before{right:100%}.code-group-nav-tab:after{left:100%}.code-group-nav-tab.active{border-bottom:1px solid var(--accent-color,#3eaf7c)}.code-group-nav-tab.active:before{background:radial-gradient(12px at left top,transparent 50%,#282c34 0)}.code-group-nav-tab.active:after{background:radial-gradient(12px at right top,transparent 50%,#282c34 0)}.code-group-item,.code-group-nav-tab:first-child:before{display:none}.code-group-item.active{display:block}.code-group-item div[class*=language-]{border-top-left-radius:0;border-top-right-radius:0}.pagination-wrapper{margin:1.25rem 0 .75rem;font-family:Arial,Helvetica,sans-serif;font-weight:600;font-size:15px;line-height:2}.pagination-wrapper .pagination-list{display:flex;justify-content:space-evenly;align-items:center;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pagination-wrapper .pagination-list .btn-group{display:flex;align-items:stretch;height:30px;margin:0 .5rem;border:1px solid var(--border-color,#eaecef);border-radius:.25rem;overflow:hidden}.pagination-wrapper .pagination-list .btn-group div{position:relative;padding:0 .5rem;background:var(--bgcolor,#fff);color:var(--accent-color,#3eaf7c);cursor:pointer}.pagination-wrapper .pagination-list .btn-group div:before{content:" ";position:absolute;top:0;left:0;bottom:0;width:1px;background:var(--border-color,#eaecef)}.pagination-wrapper .pagination-list .btn-group div:first-child:before{background:transparent}.pagination-wrapper .pagination-list .btn-group div.active,.pagination-wrapper .pagination-list .btn-group div:hover{background:var(--accent-color,#3eaf7c);color:var(--white,#fff)}.pagination-wrapper .pagination-list .btn-group div.active+div:before,.pagination-wrapper .pagination-list .btn-group div.active:before,.pagination-wrapper .pagination-list .btn-group div:hover+div:before,.pagination-wrapper .pagination-list .btn-group div:hover:before{background:var(--accent-color,#3eaf7c)}.pagination-wrapper .pagination-list .btn-group div.next,.pagination-wrapper .pagination-list .btn-group div.prev{font-size:13px;line-height:30px}.pagination-wrapper .pagination-list .btn-group div.active,.pagination-wrapper .pagination-list .btn-group div.ellipsis{cursor:default}.pagination-wrapper .pagination-list .navigate-wrapper{display:flex;justify-content:center;align-items:center;margin:.5rem}.pagination-wrapper .pagination-list .navigate-wrapper input{width:3.5rem;margin:6px 0;border:1px solid var(--border-color,#eaecef);border-radius:.25em;color:var(--text-color,#242424);background:var(--bgcolor,#fff);text-align:center;line-height:2;outline:none}.pagination-wrapper .pagination-list .navigate-wrapper .navigate{margin-left:5px;padding:0 .75em;border:1px solid var(--border-color,#eaecef);border-radius:.25em;background:var(--bgcolor,#fff);color:var(--accent-color,#3eaf7c);font-weight:600;font-size:15px;line-height:2;overflow:hidden;outline:none;cursor:pointer}.pagination-wrapper .pagination-list .navigate-wrapper .navigate:hover{color:var(--white,#fff);background:var(--accent-color,#3eaf7c);border-color:var(--accent-color,#3eaf7c)}.cancel-full-screen,.full-screen{background-color:transparent;border-width:0;cursor:pointer;width:1.8rem;height:1.8rem;padding:4px;color:#aaa;outline:none}.cancel-full-screen svg,.full-screen svg{width:100%;height:100%;fill:currentcolor}.cancel-full-screen,.full-screen:hover{color:var(--accent-color,#3eaf7c)}.cancel-full-screen:hover{color:#aaa}#install-modal-wrapper{display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;position:fixed;top:0;left:0;overflow:auto;z-index:997}#install-modal-wrapper button{background-color:transparent;border-width:0;cursor:pointer;outline:none}#install-modal-wrapper .background{position:fixed;top:0;bottom:0;left:0;right:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:998;-webkit-animation:fadein .25s;animation:fadein .25s}#install-modal-wrapper .install-modal{display:flex;flex-direction:column;position:absolute;z-index:999;max-width:56em;border-radius:10px;background:var(--bgcolor,#fff);font-family:sans-serif;-webkit-animation:opened .15s;animation:opened .15s}@media (max-width:1280px){#install-modal-wrapper .install-modal{width:92%;-webkit-animation:mobile .25s;animation:mobile .25s}}@media (max-width:419px){#install-modal-wrapper .install-modal{max-height:80%;overflow-y:scroll}#install-modal-wrapper .install-modal::-webkit-scrollbar{display:none}}#install-modal-wrapper .header{margin:40px 40px 32px}@media (max-width:959px){#install-modal-wrapper .header{margin-bottom:24px}}@media (max-width:719px){#install-modal-wrapper .header{margin:20px}}#install-modal-wrapper .header .close-button{float:right;color:var(--grey3,#333)}#install-modal-wrapper .header .close-button:focus,#install-modal-wrapper .header .close-button:hover{color:var(--dark-grey,#666)}#install-modal-wrapper .header .logo{display:flex}#install-modal-wrapper .header h1{margin-top:0;margin-bottom:7px;color:var(--dark-gery,#666);font-size:34px}@media (max-width:959px){#install-modal-wrapper .header h1{margin-bottom:0}}@media (max-width:419px){#install-modal-wrapper .header h1{font-size:26px}}#install-modal-wrapper .header img{width:122px;height:122px;margin-right:24px;padding:12px;border-radius:24px;background:#eee}.theme-dark #install-modal-wrapper .header img{background:#444}@media (max-width:959px){#install-modal-wrapper .header img{width:60px;height:60px}}@media (max-width:719px){#install-modal-wrapper .header img{margin-right:12px;padding:8px}}@media (max-width:419px){#install-modal-wrapper .header img{width:40px;height:40px;padding:6px}}#install-modal-wrapper .header .desc{max-width:40em;color:var(--grey,#888);font-size:14px;text-overflow:ellipsis;white-space:pre-wrap;overflow:hidden}@media (max-width:959px){#install-modal-wrapper .header .desc{display:none}}#install-modal-wrapper .content{margin:0 40px;color:var(--grey3,#333);flex:1}@media (max-width:719px){#install-modal-wrapper .content{margin:0 20px}}#install-modal-wrapper .content h3{font-size:22px;margin-bottom:12px}#install-modal-wrapper .content p{font-size:14px}#install-modal-wrapper .highlight{display:flex;justify-content:space-around;align-items:center;margin-right:20px}@media (max-width:719px){#install-modal-wrapper .highlight{flex-direction:column;align-items:flex-start;margin-right:0}}#install-modal-wrapper .highlight h3{margin-top:0;font-size:22px;font-weight:600;line-height:225%}@media (max-width:419px){#install-modal-wrapper .highlight h3{margin-bottom:0;font-size:18px}}#install-modal-wrapper .feature-wrapper{padding-right:2em;overflow:hidden}#install-modal-wrapper .feature-wrapper ul{-webkit-padding-start:22px;padding-inline-start:22px;-webkit-margin-before:12px;margin-block-start:12px}@media (max-width:419px){#install-modal-wrapper .feature-wrapper ul{margin-top:0}}#install-modal-wrapper .feature-wrapper li{font-size:16px;font-weight:600;line-height:29px;color:var(--dark-grey,#666)}#install-modal-wrapper .screenshot-wrapper{max-width:30em;max-height:220px;display:flex}@media (max-width:719px){#install-modal-wrapper .screenshot-wrapper{width:100%}}#install-modal-wrapper .screenshot-wrapper button{width:4em;transition:background .2s}#install-modal-wrapper .screenshot-wrapper button:focus,#install-modal-wrapper .screenshot-wrapper button:hover{background:#bbb}#install-modal-wrapper .screenshot-wrapper button svg{width:28px;fill:#6b6969}#install-modal-wrapper .screenshot{width:22em;max-height:220px;display:flex;flex-wrap:wrap;flex-direction:column;overflow-x:scroll;-webkit-overflow-scrolling:touch;-ms-scroll-snap-type:x mandatory;scroll-snap-type:x mandatory}@media (max-width:1280px){#install-modal-wrapper .screenshot{justify-content:center}}#install-modal-wrapper .screenshot::-webkit-scrollbar{display:none}#install-modal-wrapper .screenshot div{display:flex;justify-content:center;align-items:center;width:100%;height:14em;background:#efefef;scroll-snap-align:start}#install-modal-wrapper .screenshot img{height:100%;-o-object-fit:contain;object-fit:contain}@media (max-width:719px){#install-modal-wrapper .screenshot img{height:180px}}#install-modal-wrapper .description{margin-bottom:3em}#install-modal-wrapper .button-wrapper{width:100%;text-align:right;padding:1rem 0}@media (max-width:719px){#install-modal-wrapper .button-wrapper{text-align:center}}#install-modal-wrapper .cancel-button,#install-modal-wrapper .install-button{display:inline-block;flex:0 0 auto;min-width:80px;margin:.5rem 1rem;padding:.5rem 1rem;border:2px solid var(--accent-color,#3eaf7c);border-radius:20px;font-size:14px;font-weight:600}#install-modal-wrapper .install-button{background:var(--accent-color,#3eaf7c);color:var(--white,#fff)}#install-modal-wrapper .install-button:focus,#install-modal-wrapper .install-button:hover{background:var(--accent-color-l10,#3eaf7c)}@media (max-width:419px){#install-modal-wrapper .install-button span{display:none}}#install-modal-wrapper .cancel-button{background:transparent;color:var(--accent-color,#3eaf7c)}#install-modal-wrapper .cancel-button:focus,#install-modal-wrapper .cancel-button:hover{background:var(--accent-color-l10,#3eaf7c);color:var(--white,#fff)}#install-modal-wrapper .ios-text{position:fixed;bottom:0;box-sizing:border-box;width:92%;margin:2em auto;padding:.5em 2em;border-radius:8px;background:var(--white,#fff);text-align:center;font-size:14px;font-weight:700;box-shadow:0 2px 12px 0 var(--card-shadow-color,rgba(0,0,0,.15))}#install-modal-wrapper .ios-text:after{content:" ";position:absolute;left:calc(50% - .8em);bottom:-1em;width:0;height:0;border-top:1em solid var(--white,#fff);border-left:.8em solid transparent;border-right:.8em solid transparent}#install-modal-wrapper .ios-text p{margin:0 0 .5em}#install-modal-wrapper .ios-text .success{padding:.5em 1em;margin-bottom:.5em;background:#07c160;color:var(--white,#fff);border:none;border-radius:1em}@-webkit-keyframes opened{0%{transform:scale(.8);opacity:.4}to{transform:scale(1);opacity:1}}@keyframes opened{0%{transform:scale(.8);opacity:.4}to{transform:scale(1);opacity:1}}@-webkit-keyframes mobile{0%{opacity:.6}to{opacity:1}}@keyframes mobile{0%{opacity:.6}to{opacity:1}}@-webkit-keyframes fadein{0%{opacity:.2}to{opacity:1}}@keyframes fadein{0%{opacity:.2}to{opacity:1}}.modal-button{background-color:transparent;border-width:0;cursor:pointer;position:fixed;right:1rem;bottom:1rem;padding:0 16px;border-radius:1.2rem;background:var(--accent-color,#3eaf7c);color:var(--white,#fff);font-weight:600;line-height:2.2rem;outline:none;z-index:10}@media (display-mode:standalone){.modal-button{display:none}}.modal-button:active,.modal-button:hover{background:var(--accent-color-l25,#68c99d)}.sw-update-popup{position:fixed;right:1rem;bottom:1rem;padding:.5rem .75rem;border-radius:.5rem;box-shadow:0 2px 12px 0 var(--card-shadow-color,rgba(0,0,0,.15));background:var(--bgcolor,#fff);color:var(--text-color,#242424);line-height:1.5;z-index:110;cursor:pointer}.sw-update-popup .refresh{display:inline-block;vertical-align:middle;width:1.5rem;height:1.5rem;margin-left:.4em;background:var(--accent-color,#3eaf7c);border-radius:.75rem}.sw-update-popup .refresh svg{-webkit-animation:rotate 3s ease infinite;animation:rotate 3s ease infinite;width:1.2em;height:1.2em;margin:.15em;fill:var(--white,#fff)}.sw-update-popup-enter-active,.sw-update-popup-leave-active{transition:opacity .3s,transform .3s}.sw-update-popup-enter,.sw-update-popup-leave-to{opacity:0;transform:translateY(50%) scale(.5)}@-webkit-keyframes rotate{0%{transform:rotate(0deg)}50%{transform:rotate(1turn)}to{transform:rotate(1turn)}}@keyframes rotate{0%{transform:rotate(0deg)}50%{transform:rotate(1turn)}to{transform:rotate(1turn)}}#nprogress{pointer-events:none}#nprogress .bar{background:#3eaf7c;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#3eaf7c transparent transparent #3eaf7c;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.custom-block{position:relative}.custom-block .custom-block-title{margin-bottom:-.4rem;font-weight:600}.custom-block.danger,.custom-block.info,.custom-block.tip,.custom-block.warning{margin:1rem 0;padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.custom-block.danger:before,.custom-block.info:before,.custom-block.tip:before,.custom-block.warning:before{position:absolute;top:14px;left:-16px;width:25px;height:25px;border-radius:50%}.custom-block.danger a,.custom-block.details a,.custom-block.info a,.custom-block.tip a,.custom-block.warning a{color:var(--accent-color,#3eaf7c)}.theme-dark .custom-block.danger,.theme-dark .custom-block.details,.theme-dark .custom-block.info,.theme-dark .custom-block.tip,.theme-dark .custom-block.warning{background:#353535;color:#a8a8a8}.theme-dark .custom-block.danger code,.theme-dark .custom-block.details code,.theme-dark .custom-block.info code,.theme-dark .custom-block.tip code,.theme-dark .custom-block.warning code{background:#444}.custom-block.info{border-color:#007bff;background:#f8f8f8}.custom-block.info .custom-block-title{color:#0062cc}.custom-block.info:before{content:url(/docs/assets/img/info.88826912.svg)}.theme-dark .custom-block.info:before{content:url(/docs/assets/img/info-dark.f8a43cf6.svg)}.custom-block.tip{border-color:#42b983;background:#f8f8f8}.custom-block.tip .custom-block-title{color:#359469}.custom-block.tip:before{content:url(/docs/assets/img/tip.a2b80aa5.svg)}.theme-dark .custom-block.tip:before{content:url(/docs/assets/img/tip-dark.075a244c.svg)}.custom-block.warning{border-color:#f4cd00;background:#fff7d0}.custom-block.warning .custom-block-title{color:#c3a400}.custom-block.warning:before{content:url(/docs/assets/img/warning.ec428b6d.svg)}.theme-dark .custom-block.warning:before{content:url(/docs/assets/img/warning-dark.aac7e30c.svg)}.custom-block.danger{border-color:#f55;background:#ffe6e6}.custom-block.danger .custom-block-title{color:#a33}.custom-block.danger:before{content:url(/docs/assets/img/danger.b143eda2.svg)}.theme-dark .custom-block.danger:before{content:url(/docs/assets/img/danger-dark.7b1d6aa1.svg)}.custom-block.details{display:block;position:relative;margin:1.6em 0;padding:1.6em;background:#eee;border-radius:.25rem}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.custom-block.details[open] summary{margin-bottom:.5em} - -/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */.pswp{display:none;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;-ms-touch-action:none;touch-action:none;z-index:1500;-webkit-text-size-adjust:100%;-webkit-backface-visibility:hidden;outline:none}.pswp *{-webkit-box-sizing:border-box;box-sizing:border-box}.pswp img{max-width:none}.pswp--animate_opacity{opacity:.001;will-change:opacity;-webkit-transition:opacity 333ms cubic-bezier(.4,0,.22,1);transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--open{display:block}.pswp--zoom-allowed .pswp__img{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.pswp--zoomed-in .pswp__img{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.pswp--dragging .pswp__img{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.pswp__bg{background:#000;opacity:0;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden}.pswp__bg,.pswp__scroll-wrap{position:absolute;left:0;top:0;width:100%;height:100%}.pswp__scroll-wrap{overflow:hidden}.pswp__container,.pswp__zoom-wrap{-ms-touch-action:none;touch-action:none;position:absolute;left:0;right:0;top:0;bottom:0}.pswp__container,.pswp__img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.pswp__zoom-wrap{position:absolute;width:100%;-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top;-webkit-transition:-webkit-transform 333ms cubic-bezier(.4,0,.22,1);transition:transform 333ms cubic-bezier(.4,0,.22,1)}.pswp__bg{will-change:opacity;-webkit-transition:opacity 333ms cubic-bezier(.4,0,.22,1);transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--animated-in .pswp__bg,.pswp--animated-in .pswp__zoom-wrap{-webkit-transition:none;transition:none}.pswp__container,.pswp__zoom-wrap{-webkit-backface-visibility:hidden}.pswp__item{right:0;bottom:0;overflow:hidden}.pswp__img,.pswp__item{position:absolute;left:0;top:0}.pswp__img{width:auto;height:auto}.pswp__img--placeholder{-webkit-backface-visibility:hidden}.pswp__img--placeholder--blank{background:#222}.pswp--ie .pswp__img{width:100%!important;height:auto!important;left:0;top:0}.pswp__error-msg{position:absolute;left:0;top:50%;width:100%;text-align:center;font-size:14px;line-height:16px;margin-top:-8px;color:#ccc}.pswp__error-msg a{color:#ccc;text-decoration:underline} - -/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */.pswp__button{width:44px;height:44px;position:relative;background:none;cursor:pointer;overflow:visible;-webkit-appearance:none;display:block;border:0;padding:0;margin:0;float:right;opacity:.75;-webkit-transition:opacity .2s;transition:opacity .2s;-webkit-box-shadow:none;box-shadow:none}.pswp__button:focus,.pswp__button:hover{opacity:1}.pswp__button:active{outline:none;opacity:.9}.pswp__button::-moz-focus-inner{padding:0;border:0}.pswp__ui--over-close .pswp__button--close{opacity:1}.pswp__button,.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAABYCAQAAACjBqE3AAAB6klEQVR4Ae3bsWpUQRTG8YkkanwCa7GzVotsI/gEgk9h4Vu4ySLYmMYgbJrc3lrwZbJwC0FMt4j7F6Y4oIZrsXtgxvx/1c0ufEX4cnbmLCmSJEmSJEmSJEmSJP3XCBPvbJU+8doWmDFwyZpLBmYlNJebz0KwzykwsuSYJSNwykEJreV2BaBMaLIQZ2xYcFgqDlmw4ayE/FwL0dDk4Qh4W37DAjgqIT+3HRbigjH+iikVdxgZStgyN0Su2sXIeTwTT+esdpcbIlfNAuZ/TxresG4zV8kYWSZNiKUTokMMSWeIwTNEn4fK2TW3gRNgVkJLuVksROA9G+bEvoATNlBCa7nZXEwdxEZxzpKRKFh+bsv8LmPFmhX1OwfIz81jIRJQ5eeqG9B+riRJkiRJkiRJkiRJkiRJkiRJUkvA/8RQoEpKlJWINFkJ62AlrEP/mNBibnv2yz/A3t7Uq3LcpoxP8COjC1T5vxoAD5VdoEqdDrd5QuW1swtUSaueh3zkiuBiqgtA2OlkeMcP/uDqugsJdbjHF65VdPMKwS0+WQc/MgKvrIOHysB9vgPwk8+85hmPbnQdvHZyDMAFD7L3EOpgMcVdvnHFS0/vlatrXvCVx0U9gt3fxvnA0/hB4nmRJEmSJEmSJEmSJGmHfgFLaDPoMu5xWwAAAABJRU5ErkJggg==) 0 0 no-repeat;background-size:264px 88px;width:44px;height:44px}@media (-webkit-min-device-pixel-ratio:1.1),(-webkit-min-device-pixel-ratio:1.09375),(min-resolution:1.1dppx),(min-resolution:105dpi){.pswp--svg .pswp__button,.pswp--svg .pswp__button--arrow--left:before,.pswp--svg .pswp__button--arrow--right:before{background-image:url(/docs/assets/img/default-skin.b257fa9c.svg)}.pswp--svg .pswp__button--arrow--left,.pswp--svg .pswp__button--arrow--right{background:none}}.pswp__button--close{background-position:0 -44px}.pswp__button--share{background-position:-44px -44px}.pswp__button--fs{display:none}.pswp--supports-fs .pswp__button--fs{display:block}.pswp--fs .pswp__button--fs{background-position:-44px 0}.pswp__button--zoom{display:none;background-position:-88px 0}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__button--zoom{background-position:-132px 0}.pswp--touch .pswp__button--arrow--left,.pswp--touch .pswp__button--arrow--right{visibility:hidden}.pswp__button--arrow--left,.pswp__button--arrow--right{background:none;top:50%;margin-top:-50px;width:70px;height:100px;position:absolute}.pswp__button--arrow--left{left:0}.pswp__button--arrow--right{right:0}.pswp__button--arrow--left:before,.pswp__button--arrow--right:before{content:"";top:35px;background-color:rgba(0,0,0,.3);height:30px;width:32px;position:absolute}.pswp__button--arrow--left:before{left:6px;background-position:-138px -44px}.pswp__button--arrow--right:before{right:6px;background-position:-94px -44px}.pswp__counter,.pswp__share-modal{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pswp__share-modal{display:block;background:rgba(0,0,0,.5);width:100%;height:100%;top:0;left:0;padding:10px;position:absolute;z-index:1600;opacity:0;-webkit-transition:opacity .25s ease-out;transition:opacity .25s ease-out;-webkit-backface-visibility:hidden;will-change:opacity}.pswp__share-modal--hidden{display:none}.pswp__share-tooltip{z-index:1620;position:absolute;background:#fff;top:56px;border-radius:2px;display:block;width:auto;right:44px;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.25);box-shadow:0 2px 5px rgba(0,0,0,.25);-webkit-transform:translateY(6px);-ms-transform:translateY(6px);transform:translateY(6px);-webkit-transition:-webkit-transform .25s;transition:transform .25s;-webkit-backface-visibility:hidden;will-change:transform}.pswp__share-tooltip a{display:block;padding:8px 12px;font-size:14px;line-height:18px}.pswp__share-tooltip a,.pswp__share-tooltip a:hover{color:#000;text-decoration:none}.pswp__share-tooltip a:first-child{border-radius:2px 2px 0 0}.pswp__share-tooltip a:last-child{border-radius:0 0 2px 2px}.pswp__share-modal--fade-in{opacity:1}.pswp__share-modal--fade-in .pswp__share-tooltip{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.pswp--touch .pswp__share-tooltip a{padding:16px 12px}a.pswp__share--facebook:before{content:"";display:block;width:0;height:0;position:absolute;top:-12px;right:15px;border:6px solid transparent;border-bottom-color:#fff;-webkit-pointer-events:none;-moz-pointer-events:none;pointer-events:none}a.pswp__share--facebook:hover{background:#3e5c9a;color:#fff}a.pswp__share--facebook:hover:before{border-bottom-color:#3e5c9a}a.pswp__share--twitter:hover{background:#55acee;color:#fff}a.pswp__share--pinterest:hover{background:#ccc;color:#ce272d}a.pswp__share--download:hover{background:#ddd}.pswp__counter{position:absolute;left:0;top:0;height:44px;font-size:13px;line-height:44px;color:#fff;opacity:.75;padding:0 10px}.pswp__caption{position:absolute;left:0;bottom:0;width:100%;min-height:44px}.pswp__caption small{font-size:11px;color:#bbb}.pswp__caption__center{text-align:left;max-width:420px;margin:0 auto;font-size:13px;padding:10px;line-height:20px;color:#ccc}.pswp__caption--empty{display:none}.pswp__caption--fake{visibility:hidden}.pswp__preloader{width:44px;height:44px;position:absolute;top:0;left:50%;margin-left:-22px;opacity:0;-webkit-transition:opacity .25s ease-out;transition:opacity .25s ease-out;will-change:opacity;direction:ltr}.pswp__preloader__icn{width:20px;height:20px;margin:12px}.pswp__preloader--active{opacity:1}.pswp__preloader--active .pswp__preloader__icn{background:url(data:image/gif;base64,R0lGODlhFAAUAPMIAIeHhz8/P1dXVycnJ8/Pz7e3t5+fn29vb////wAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBwAIACwAAAAAFAAUAEAEUxDJSatFxtwaggWAdIyHJAhXoRYSQUhDPGx0TbmujahbXGWZWqdDAYEsp5NupLPkdDwE7oXwWVasimzWrAE1tKFHErQRK8eL8mMUlRBJVI307uoiACH5BAUHAAgALAEAAQASABIAAAROEMkpS6E4W5upMdUmEQT2feFIltMJYivbvhnZ3R0A4NMwIDodz+cL7nDEn5CH8DGZh8MtEMBEoxkqlXKVIgQCibbK9YLBYvLtHH5K0J0IACH5BAUHAAgALAEAAQASABIAAAROEMkpjaE4W5spANUmFQX2feFIltMJYivbvhnZ3d1x4BNBIDodz+cL7nDEn5CH8DGZAsFtMMBEoxkqlXKVIgIBibbK9YLBYvLtHH5K0J0IACH5BAUHAAgALAEAAQASABIAAAROEMkpAaA4W5vpOdUmGQb2feFIltMJYivbvhnZ3Z0g4FNRIDodz+cL7nDEn5CH8DGZgcCNQMBEoxkqlXKVIgYDibbK9YLBYvLtHH5K0J0IACH5BAUHAAgALAEAAQASABIAAAROEMkpz6E4W5upENUmAQD2feFIltMJYivbvhnZ3V0Q4JNhIDodz+cL7nDEn5CH8DGZg8GtUMBEoxkqlXKVIggEibbK9YLBYvLtHH5K0J0IACH5BAUHAAgALAEAAQASABIAAAROEMkphaA4W5tpCNUmHQf2feFIltMJYivbvhnZ3d0w4BMAIDodz+cL7nDEn5CH8DGZBMLNYMBEoxkqlXKVIgoFibbK9YLBYvLtHH5K0J0IACH5BAUHAAgALAEAAQASABIAAAROEMkpQ6A4W5vpGNUmCQL2feFIltMJYivbvhnZ3R1B4NNxIDodz+cL7nDEn5CH8DGZhcINAMBEoxkqlXKVIgwGibbK9YLBYvLtHH5K0J0IACH5BAUHAAcALAEAAQASABIAAANCeLo6wzA6FxkhbaoQ4L3ZxnXLh0EjWZ4RV71VUcCLIByyTNt2PsO8m452sBGJBsNxkUwuD03lAQBASqnUJ7aq5UYSADs=) 0 0 no-repeat}.pswp--css_animation .pswp__preloader--active{opacity:1}.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn{-webkit-animation:clockwise .5s linear infinite;animation:clockwise .5s linear infinite}.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut{-webkit-animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite;animation:donut-rotate 1s cubic-bezier(.4,0,.22,1) infinite}.pswp--css_animation .pswp__preloader__icn{background:none;opacity:.75;width:14px;height:14px;position:absolute;left:15px;top:15px;margin:0}.pswp--css_animation .pswp__preloader__cut{position:relative;width:7px;height:14px;overflow:hidden}.pswp--css_animation .pswp__preloader__donut{-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;border-radius:50%;border-color:#fff #fff transparent transparent;border-style:solid;border-width:2px;position:absolute;top:0;left:0;background:none;margin:0}@media screen and (max-width:1024px){.pswp__preloader{position:relative;left:auto;top:auto;margin:0;float:right}}@-webkit-keyframes clockwise{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes clockwise{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes donut-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(-140deg);transform:rotate(-140deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes donut-rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}50%{-webkit-transform:rotate(-140deg);transform:rotate(-140deg)}to{-webkit-transform:rotate(0);transform:rotate(0)}}.pswp__ui{-webkit-font-smoothing:auto;visibility:visible;opacity:1;z-index:1550}.pswp__top-bar{position:absolute;left:0;top:0;height:44px;width:100%}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right,.pswp__caption,.pswp__top-bar{-webkit-backface-visibility:hidden;will-change:opacity;-webkit-transition:opacity 333ms cubic-bezier(.4,0,.22,1);transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.pswp--has_mouse .pswp__button--arrow--left,.pswp--has_mouse .pswp__button--arrow--right{visibility:visible}.pswp__caption,.pswp__top-bar{background-color:rgba(0,0,0,.5)}.pswp__ui--fit .pswp__caption,.pswp__ui--fit .pswp__top-bar{background-color:rgba(0,0,0,.3)}.pswp__ui--idle .pswp__button--arrow--left,.pswp__ui--idle .pswp__button--arrow--right,.pswp__ui--idle .pswp__top-bar{opacity:0}.pswp__ui--hidden .pswp__button--arrow--left,.pswp__ui--hidden .pswp__button--arrow--right,.pswp__ui--hidden .pswp__caption,.pswp__ui--hidden .pswp__top-bar{opacity:.001}.pswp__ui--one-slide .pswp__button--arrow--left,.pswp__ui--one-slide .pswp__button--arrow--right,.pswp__ui--one-slide .pswp__counter{display:none}.pswp__element--disabled{display:none!important}.pswp--minimal--dark .pswp__top-bar{background:none}html{scroll-behavior:smooth}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.custom-block.left{text-align:left}.custom-block.center{text-align:center}.custom-block.right{text-align:right}.custom-block.justify{text-align:justify}.footnotes .footnotes-list .footnote-item{margin-top:-3.6rem;padding-top:4.1rem}.footnotes .footnotes-list .footnote-item>p{margin-bottom:0}.footnote-ref{position:relative;margin-top:-4.1rem;padding-top:4.1rem}.footnote-ref .footnote-anchor{position:absolute;top:0}.katex{font-size:1.05em}.katex-display{padding-top:.2em;padding-bottom:.2em;overflow:auto hidden;-webkit-overflow-scrolling:touch}.katex-display::-webkit-scrollbar{height:3px}.katex-display .katex{font-size:1.21em}.katex-error{color:red}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/docs/assets/fonts/KaTeX_AMS-Regular.66c67820.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_AMS-Regular.10824af7.woff) format("woff"),url(/docs/assets/fonts/KaTeX_AMS-Regular.56573229.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(/docs/assets/fonts/KaTeX_Caligraphic-Bold.497bf407.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(/docs/assets/fonts/KaTeX_Caligraphic-Regular.e6fb499f.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/docs/assets/fonts/KaTeX_Fraktur-Bold.796f3797.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Fraktur-Bold.40934fc0.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Fraktur-Bold.b9d7c449.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/docs/assets/fonts/KaTeX_Fraktur-Regular.f9e6a99f.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Fraktur-Regular.e435cda5.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Fraktur-Regular.97a699d8.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/docs/assets/fonts/KaTeX_Main-Bold.a9382e25.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Main-Bold.4cdba646.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Main-Bold.8e431f7e.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/docs/assets/fonts/KaTeX_Main-BoldItalic.d8737343.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Main-BoldItalic.5f875f98.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Main-BoldItalic.52fb39b0.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/docs/assets/fonts/KaTeX_Main-Italic.65297062.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Main-Italic.8ffd28f6.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Main-Italic.39349e0a.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/docs/assets/fonts/KaTeX_Main-Regular.f8a7f19f.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Main-Regular.f1cdb692.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Main-Regular.818582da.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/docs/assets/fonts/KaTeX_Math-BoldItalic.1320454d.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Math-BoldItalic.48155e43.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Math-BoldItalic.6589c4f1.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/docs/assets/fonts/KaTeX_Math-Italic.d8b7a801.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Math-Italic.ed7aea12.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Math-Italic.fe5ed587.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(/docs/assets/fonts/KaTeX_SansSerif-Bold.ad546b47.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_SansSerif-Bold.0e897d27.woff) format("woff"),url(/docs/assets/fonts/KaTeX_SansSerif-Bold.f2ac7312.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(/docs/assets/fonts/KaTeX_SansSerif-Italic.e934cbc8.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_SansSerif-Italic.ef725de5.woff) format("woff"),url(/docs/assets/fonts/KaTeX_SansSerif-Italic.f60b4a34.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(/docs/assets/fonts/KaTeX_SansSerif-Regular.1ac3ed6e.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_SansSerif-Regular.5f8637ee.woff) format("woff"),url(/docs/assets/fonts/KaTeX_SansSerif-Regular.3243452e.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/docs/assets/fonts/KaTeX_Script-Regular.a82fa2a7.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Script-Regular.a189c37d.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(/docs/assets/fonts/KaTeX_Size1-Regular.0d8d9204.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(/docs/assets/fonts/KaTeX_Size2-Regular.1fdda0e5.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(data:font/ttf;base64,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AKIAAwABBAkAAgAOALgAAwABBAkAAwBGAMYAAwABBAkABAAmAQwAAwABBAkABQBCATIAAwABBAkABgAmAQwAAwABBAkADQJmAXQAAwABBAkADgA0A9oAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACAARABlAHMAaQBnAG4AIABTAGMAaQBlAG4AYwBlACwAIABJAG4AYwAuAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkASwBhAFQAZQBYAF8AUwBpAHoAZQAzAFIAZQBnAHUAbABhAHIARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABLAGEAVABlAFgAXwBTAGkAegBlADMALQBSAGUAZwB1AGwAYQByAEsAYQBUAGUAWABfAFMAaQB6AGUAMwAtAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAxADsAIAB0AHQAZgBhAHUAdABvAGgAaQBuAHQAIAAoAHYAMQAuADgALgAzACkAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAwADkALQAyADAAMQAwACwAIABEAGUAcwBpAGcAbgAgAFMAYwBpAGUAbgBjAGUALAAgAEkAbgBjAC4AIAAoADwAdwB3AHcALgBtAGEAdABoAGoAYQB4AC4AbwByAGcAPgApAAoAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADQALQAyADAAMQA4ACAASwBoAGEAbgAgAEEAYwBhAGQAZQBtAHkAIAAoADwAdwB3AHcALgBrAGgAYQBuAGEAYwBhAGQAZQBtAHkALgBvAHIAZwA+ACkALAAKAHcAaQB0AGgAIABSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAgAEsAYQBUAGUAWABfAFMAaQB6AGUAMwAuAAoACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuAAoAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAKAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAQACAAMACwAMABIAPgA/AEAAXgBgAQIA2ADZAQMBBAClAQUBBgEHAQgBCQEKB3VuaTAwQTAHdW5pMDMwMgl0aWxkZWNvbWIHdW5pMjMwOAd1bmkyMzA5B3VuaTIzMEEHdW5pMjMwQgd1bmkyN0U4B3VuaTI3RTkAAQAB//8ADw==) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(data:font/woff;base64,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) format("woff"),url(/docs/assets/fonts/KaTeX_Size4-Regular.27a23ee6.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/docs/assets/fonts/KaTeX_Typewriter-Regular.b8b8393d.woff2) format("woff2"),url(/docs/assets/fonts/KaTeX_Typewriter-Regular.0e046058.woff) format("woff"),url(/docs/assets/fonts/KaTeX_Typewriter-Regular.6bf42875.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.15.1"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.category-info.enable>span:hover{cursor:pointer;color:var(--accent-color,#3eaf7c)}.tags-wrapper{list-style:none;margin:0;padding-left:0}.tags-wrapper .tag{display:inline-block;position:relative;vertical-align:middle;min-width:1.5em;margin:0 .2em;padding:0 .2em;border-width:.5px;border-style:solid;border-radius:.75em;background:#f8f8f8;font-size:.75em;text-align:center;overflow:hidden;transition:all .2s}.theme-dark .tags-wrapper .tag{background:#222}.tags-wrapper .tag.clickable:hover{cursor:pointer;background:var(--bgcolor,#fff);box-shadow:0 1px 6px 0 var(--card-shadow-color,rgba(0,0,0,.2))}.tags-wrapper .tag0,.theme-light .tags-wrapper .tag0{color:#e91526;border-color:#e91526}.tags-wrapper .tag0.clickable:hover,.theme-light .tags-wrapper .tag0.clickable:hover{color:#cf1322;border-color:#cf1322}.theme-dark .tags-wrapper .tag0{color:#ba111f;border-color:#ba111f}.theme-dark .tags-wrapper .tag0.clickable:hover{color:#cf1322;border-color:#cf1322}.tags-wrapper .tag1,.theme-light .tags-wrapper .tag1{color:#fa6533;border-color:#fa6533}.tags-wrapper .tag1.clickable:hover,.theme-light .tags-wrapper .tag1.clickable:hover{color:#fa541c;border-color:#fa541c}.theme-dark .tags-wrapper .tag1{color:#f54205;border-color:#f54205}.theme-dark .tags-wrapper .tag1.clickable:hover{color:#fa541c;border-color:#fa541c}.tags-wrapper .tag2,.theme-light .tags-wrapper .tag2{color:#f4a62a;border-color:#f4a62a}.tags-wrapper .tag2.clickable:hover,.theme-light .tags-wrapper .tag2.clickable:hover{color:#f39c12;border-color:#f39c12}.theme-dark .tags-wrapper .tag2{color:#e08e0b;border-color:#e08e0b}.theme-dark .tags-wrapper .tag2.clickable:hover{color:#f39c12;border-color:#f39c12}.tags-wrapper .tag3,.theme-light .tags-wrapper .tag3{color:#40d47f;border-color:#40d47f}.tags-wrapper .tag3.clickable:hover,.theme-light .tags-wrapper .tag3.clickable:hover{color:#2ecc71;border-color:#2ecc71}.theme-dark .tags-wrapper .tag3{color:#29b866;border-color:#29b866}.theme-dark .tags-wrapper .tag3.clickable:hover{color:#2ecc71;border-color:#2ecc71}.tags-wrapper .tag4,.theme-light .tags-wrapper .tag4{color:#2bbe69;border-color:#2bbe69}.tags-wrapper .tag4.clickable:hover,.theme-light .tags-wrapper .tag4.clickable:hover{color:#25a55b;border-color:#25a55b}.theme-dark .tags-wrapper .tag4{color:#219552;border-color:#219552}.theme-dark .tags-wrapper .tag4.clickable:hover{color:#25a55b;border-color:#25a55b}.tags-wrapper .tag5,.theme-light .tags-wrapper .tag5{color:#16dddd;border-color:#16dddd}.tags-wrapper .tag5.clickable:hover,.theme-light .tags-wrapper .tag5.clickable:hover{color:#13c2c2;border-color:#13c2c2}.theme-dark .tags-wrapper .tag5{color:#11afaf;border-color:#11afaf}.theme-dark .tags-wrapper .tag5.clickable:hover{color:#13c2c2;border-color:#13c2c2}.tags-wrapper .tag6,.theme-light .tags-wrapper .tag6{color:#0a7bf4;border-color:#0a7bf4}.tags-wrapper .tag6.clickable:hover,.theme-light .tags-wrapper .tag6.clickable:hover{color:#096dd9;border-color:#096dd9}.theme-dark .tags-wrapper .tag6{color:#0862c3;border-color:#0862c3}.theme-dark .tags-wrapper .tag6.clickable:hover{color:#096dd9;border-color:#096dd9}.tags-wrapper .tag7,.theme-light .tags-wrapper .tag7{color:#b27deb;border-color:#b27deb}.tags-wrapper .tag7.clickable:hover,.theme-light .tags-wrapper .tag7.clickable:hover{color:#aa6fe9;border-color:#aa6fe9}.theme-dark .tags-wrapper .tag7{color:#9851e4;border-color:#9851e4}.theme-dark .tags-wrapper .tag7.clickable:hover{color:#aa6fe9;border-color:#aa6fe9}.tags-wrapper .tag8,.theme-light .tags-wrapper .tag8{color:#ed44a0;border-color:#ed44a0}.tags-wrapper .tag8.clickable:hover,.theme-light .tags-wrapper .tag8.clickable:hover{color:#eb2f96;border-color:#eb2f96}.theme-dark .tags-wrapper .tag8{color:#e81689;border-color:#e81689}.theme-dark .tags-wrapper .tag8.clickable:hover{color:#eb2f96;border-color:#eb2f96}.article-info{color:var(--dark-grey);font-size:14px;font-family:Arial,Helvetica,sans-serif}.article-info>span{display:inline-block;margin-right:.5em;line-height:1.8}@media (max-width:419px){.article-info>span{margin-right:.3em;font-size:.86rem}}.article-info>span:after{--balloon-font-size:8px;padding:.3em .6em!important}.article-info>span svg{position:relative;bottom:-.125em}.article-info>span .tags-wrapper{display:inline-block}.article-info .icon{width:1em;height:1em}.article{position:relative;box-sizing:border-box;width:100%;margin:0 auto 20px;padding:16px 20px;background:var(--bgcolor);border-radius:6px;text-align:left;box-shadow:0 1px 3px 0 var(--card-shadow-color)}@media (max-width:419px){.article{border-radius:0}}.article:last-child{margin-bottom:0}.article:hover{box-shadow:0 2px 6px 0 var(--card-shadow-color)}.article .sticky-icon{position:absolute;top:0;right:0;width:40px;height:40px;fill:var(--accent-color)}.article .sticky-icon .sticky-text{fill:var(--white)}.article .title{display:inline-block;position:relative;font-size:1.28rem;line-height:36px}.article .title:after{content:"";position:absolute;width:100%;height:2px;bottom:0;left:0;background:var(--accent-color);visibility:hidden;transform:scaleX(0);transition:transform .3s ease-in-out}.article .title:hover{cursor:pointer}.article .title:hover:after{visibility:visible;transform:scaleX(1)}.article .title .lock-icon,.article .title .presentation-icon{position:relative;bottom:-.125em;display:inline-block;vertical-align:baseline;width:20px;height:20px;color:var(--accent-color)}.article .excerpt{overflow:hidden;line-height:1.7}.article .excerpt h1{display:none}.article .excerpt h1+p,.article .excerpt p:first-child{margin-top:.5em}.article .excerpt p:last-child{margin-bottom:.5em}.article .excerpt pre{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0}.article .excerpt .line-numbers-mode pre{padding-left:3.5rem}.article .excerpt .code-demo-wrapper{display:none}.theme-dark .empty-icon g.people{opacity:.8}.theme-dark .empty-icon g:not(.people){filter:invert(80%)}.drop-enter,.drop-leave-to{opacity:0;transform:translateY(-20px)}.article-wrapper{margin-top:-4.1rem;padding-top:4.1rem;text-align:center}@media (max-width:719px){.article-wrapper{margin-top:-3.75rem;padding-top:3.75rem}}.article-wrapper .empty{max-width:560px;margin:0 auto;text-align:center}.category-list-wrapper{position:relative;z-index:2;padding-left:0;font-size:14px;font-family:Arial,Helvetica,sans-serif;list-style:none}.category-list-wrapper .category{display:inline-block;vertical-align:middle;margin:.3rem .6rem .8rem;padding:.4rem .8rem;border-radius:.25rem;box-shadow:0 1px 4px 0 var(--card-shadow-color);color:var(--dark-grey);cursor:pointer;overflow:hidden;transition:background-color .3s,color .3s}@media (max-width:419px){.category-list-wrapper .category{font-size:.9rem}}.category-list-wrapper .category .category-num{display:inline-block;min-width:1rem;height:1.2rem;margin-left:.2em;padding:0 .1rem;border-radius:.6rem;color:var(--white);font-family:sans-serif;font-size:.7rem;line-height:1.2rem;text-align:center}.category-list-wrapper .category0,.theme-light .category-list-wrapper .category0{background:#fde5e7}.category-list-wrapper .category0:hover,.theme-light .category-list-wrapper .category0:hover{background:#f9bec3}.category-list-wrapper .category0.active,.theme-light .category-list-wrapper .category0.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category0.active .category-num,.theme-light .category-list-wrapper .category0.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category0{background:#340508}.theme-dark .category-list-wrapper .category0:hover{background:#53080e}.theme-dark .category-list-wrapper .category0.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category0 .category-num{background:#cf1322}.category-list-wrapper .category1,.theme-light .category-list-wrapper .category1{background:#ffeee8}.category-list-wrapper .category1:hover,.theme-light .category-list-wrapper .category1:hover{background:#fed4c6}.category-list-wrapper .category1.active,.theme-light .category-list-wrapper .category1.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category1.active .category-num,.theme-light .category-list-wrapper .category1.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category1{background:#441201}.theme-dark .category-list-wrapper .category1:hover{background:#6d1d02}.theme-dark .category-list-wrapper .category1.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category1 .category-num{background:#fa541c}.category-list-wrapper .category2,.theme-light .category-list-wrapper .category2{background:#fef5e7}.category-list-wrapper .category2:hover,.theme-light .category-list-wrapper .category2:hover{background:#fce6c4}.category-list-wrapper .category2.active,.theme-light .category-list-wrapper .category2.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category2.active .category-num,.theme-light .category-list-wrapper .category2.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category2{background:#3e2703}.theme-dark .category-list-wrapper .category2:hover{background:#633f05}.theme-dark .category-list-wrapper .category2.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category2 .category-num{background:#f39c12}.category-list-wrapper .category3,.theme-light .category-list-wrapper .category3{background:#eafaf1}.category-list-wrapper .category3:hover,.theme-light .category-list-wrapper .category3:hover{background:#caf3db}.category-list-wrapper .category3.active,.theme-light .category-list-wrapper .category3.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category3.active .category-num,.theme-light .category-list-wrapper .category3.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category3{background:#0c331c}.theme-dark .category-list-wrapper .category3:hover{background:#12522d}.theme-dark .category-list-wrapper .category3.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category3 .category-num{background:#2ecc71}.category-list-wrapper .category4,.theme-light .category-list-wrapper .category4{background:#e6f9ee}.category-list-wrapper .category4:hover,.theme-light .category-list-wrapper .category4:hover{background:#c0f1d5}.category-list-wrapper .category4.active,.theme-light .category-list-wrapper .category4.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category4.active .category-num,.theme-light .category-list-wrapper .category4.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category4{background:#092917}.theme-dark .category-list-wrapper .category4:hover{background:#0f4224}.theme-dark .category-list-wrapper .category4.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category4 .category-num{background:#25a55b}.category-list-wrapper .category5,.theme-light .category-list-wrapper .category5{background:#e4fcfc}.category-list-wrapper .category5:hover,.theme-light .category-list-wrapper .category5:hover{background:#bbf8f8}.category-list-wrapper .category5.active,.theme-light .category-list-wrapper .category5.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category5.active .category-num,.theme-light .category-list-wrapper .category5.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category5{background:#053030}.theme-dark .category-list-wrapper .category5:hover{background:#084e4e}.theme-dark .category-list-wrapper .category5.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category5 .category-num{background:#13c2c2}.category-list-wrapper .category6,.theme-light .category-list-wrapper .category6{background:#e4f0fe}.category-list-wrapper .category6:hover,.theme-light .category-list-wrapper .category6:hover{background:#bbdafc}.category-list-wrapper .category6.active,.theme-light .category-list-wrapper .category6.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category6.active .category-num,.theme-light .category-list-wrapper .category6.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category6{background:#021b36}.theme-dark .category-list-wrapper .category6:hover{background:#042c57}.theme-dark .category-list-wrapper .category6.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category6 .category-num{background:#096dd9}.category-list-wrapper .category7,.theme-light .category-list-wrapper .category7{background:#f7f1fd}.category-list-wrapper .category7:hover,.theme-light .category-list-wrapper .category7:hover{background:#eadbfa}.category-list-wrapper .category7.active,.theme-light .category-list-wrapper .category7.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category7.active .category-num,.theme-light .category-list-wrapper .category7.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category7{background:#2a0b4b}.theme-dark .category-list-wrapper .category7:hover{background:#431277}.theme-dark .category-list-wrapper .category7.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category7 .category-num{background:#aa6fe9}.category-list-wrapper .category8,.theme-light .category-list-wrapper .category8{background:#fdeaf5}.category-list-wrapper .category8:hover,.theme-light .category-list-wrapper .category8:hover{background:#facbe5}.category-list-wrapper .category8.active,.theme-light .category-list-wrapper .category8.active{background:var(--accent-color);color:var(--white)}.category-list-wrapper .category8.active .category-num,.theme-light .category-list-wrapper .category8.active .category-num{color:var(--accent-color);background:var(--bgcolor-light)}.theme-dark .category-list-wrapper .category8{background:#400626}.theme-dark .category-list-wrapper .category8:hover{background:#670a3d}.theme-dark .category-list-wrapper .category8.active{background:var(--accent-color-d10);color:var(--white)}.category-list-wrapper .category8 .category-num{background:#eb2f96}.nav-link{line-height:1.4rem}.navbar .nav-link{color:var(--dark-grey)}.navbar .nav-link.active{color:var(--accent-color)}.sidebar .nav-link{color:var(--text-color)}.sidebar .nav-link.active,.sidebar .nav-link:hover{color:var(--accent-color)}.tag-list-wrapper{position:relative;z-index:2;padding-left:0;font-family:Arial,Helvetica,sans-serif;list-style:none;display:flex;flex-wrap:wrap;justify-content:space-evenly}.tag-list-wrapper .tag{display:inline-block;position:relative;vertical-align:middle;min-width:24px;margin:4px 6px;padding:3px 8px;border-radius:8px;box-shadow:0 1px 6px 0 var(--box-shadow-color);color:var(--white);font-size:12px;text-align:center;overflow:hidden;cursor:pointer;transition:background-color .3s,transform .3s}.tag-list-wrapper .tag:hover{cursor:pointer}.tag-list-wrapper .tag.active{transform:scale(1.1)}.tag-list-wrapper .tag0,.theme-light .tag-list-wrapper .tag0{background:#e91526}.tag-list-wrapper .tag0.active,.tag-list-wrapper .tag0:hover,.theme-dark .tag-list-wrapper .tag0,.theme-light .tag-list-wrapper .tag0.active,.theme-light .tag-list-wrapper .tag0:hover{background:#c51220}.theme-dark .tag-list-wrapper .tag0.active,.theme-dark .tag-list-wrapper .tag0:hover{background:#e91526}.tag-list-wrapper .tag1,.theme-light .tag-list-wrapper .tag1{background:#fa6533}.tag-list-wrapper .tag1.active,.tag-list-wrapper .tag1:hover,.theme-dark .tag-list-wrapper .tag1,.theme-light .tag-list-wrapper .tag1.active,.theme-light .tag-list-wrapper .tag1:hover{background:#fa4a0e}.theme-dark .tag-list-wrapper .tag1.active,.theme-dark .tag-list-wrapper .tag1:hover{background:#fa6533}.tag-list-wrapper .tag2,.theme-light .tag-list-wrapper .tag2{background:#f4a62a}.tag-list-wrapper .tag2.active,.tag-list-wrapper .tag2:hover,.theme-dark .tag-list-wrapper .tag2,.theme-light .tag-list-wrapper .tag2.active,.theme-light .tag-list-wrapper .tag2:hover{background:#ec950c}.theme-dark .tag-list-wrapper .tag2.active,.theme-dark .tag-list-wrapper .tag2:hover{background:#f4a62a}.tag-list-wrapper .tag3,.theme-light .tag-list-wrapper .tag3{background:#40d47f}.tag-list-wrapper .tag3.active,.tag-list-wrapper .tag3:hover,.theme-dark .tag-list-wrapper .tag3,.theme-light .tag-list-wrapper .tag3.active,.theme-light .tag-list-wrapper .tag3:hover{background:#2cc26b}.theme-dark .tag-list-wrapper .tag3.active,.theme-dark .tag-list-wrapper .tag3:hover{background:#40d47f}.tag-list-wrapper .tag4,.theme-light .tag-list-wrapper .tag4{background:#2bbe69}.tag-list-wrapper .tag4.active,.tag-list-wrapper .tag4:hover,.theme-dark .tag-list-wrapper .tag4,.theme-light .tag-list-wrapper .tag4.active,.theme-light .tag-list-wrapper .tag4:hover{background:#239d56}.theme-dark .tag-list-wrapper .tag4.active,.theme-dark .tag-list-wrapper .tag4:hover{background:#2bbe69}.tag-list-wrapper .tag5,.theme-light .tag-list-wrapper .tag5{background:#16dddd}.tag-list-wrapper .tag5.active,.tag-list-wrapper .tag5:hover,.theme-dark .tag-list-wrapper .tag5,.theme-light .tag-list-wrapper .tag5.active,.theme-light .tag-list-wrapper .tag5:hover{background:#12b8b8}.theme-dark .tag-list-wrapper .tag5.active,.theme-dark .tag-list-wrapper .tag5:hover{background:#16dddd}.tag-list-wrapper .tag6,.theme-light .tag-list-wrapper .tag6{background:#0a7bf4}.tag-list-wrapper .tag6.active,.tag-list-wrapper .tag6:hover,.theme-dark .tag-list-wrapper .tag6,.theme-light .tag-list-wrapper .tag6.active,.theme-light .tag-list-wrapper .tag6:hover{background:#0968ce}.theme-dark .tag-list-wrapper .tag6.active,.theme-dark .tag-list-wrapper .tag6:hover{background:#0a7bf4}.tag-list-wrapper .tag7,.theme-light .tag-list-wrapper .tag7{background:#b27deb}.tag-list-wrapper .tag7.active,.tag-list-wrapper .tag7:hover,.theme-dark .tag-list-wrapper .tag7,.theme-light .tag-list-wrapper .tag7.active,.theme-light .tag-list-wrapper .tag7:hover{background:#a160e7}.theme-dark .tag-list-wrapper .tag7.active,.theme-dark .tag-list-wrapper .tag7:hover{background:#b27deb}.tag-list-wrapper .tag8,.theme-light .tag-list-wrapper .tag8{background:#ed44a0}.tag-list-wrapper .tag8.active,.tag-list-wrapper .tag8:hover,.theme-dark .tag-list-wrapper .tag8,.theme-light .tag-list-wrapper .tag8.active,.theme-light .tag-list-wrapper .tag8:hover{background:#ea2290}.theme-dark .tag-list-wrapper .tag8.active,.theme-dark .tag-list-wrapper .tag8:hover{background:#ed44a0}.dropdown-wrapper{height:1.8rem;cursor:pointer}.dropdown-wrapper:not(:hover) .arrow{transform:rotate(-180deg)}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{z-index:2;transform:scale(1);visibility:visible;opacity:1}.dropdown-wrapper .dropdown-title{background-color:transparent;border-width:0;cursor:pointer;cursor:inherit;padding:inherit;color:var(--dark-grey);font-family:inherit;font-size:.9rem;font-weight:500;line-height:1.4rem}.dropdown-wrapper .dropdown-title:after{border-left:5px solid var(--accent-color)}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s;font-size:1.2em}.theme-dark .dropdown-wrapper .dropdown-title .arrow{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(180deg)}.dropdown-wrapper .dropdown-title .arrow.right{transform:rotate(90deg)}.dropdown-wrapper .dropdown-title .arrow.left{transform:rotate(-90deg)}.dropdown-wrapper .nav-dropdown{box-sizing:border-box;position:absolute;top:100%;right:0;max-height:96.4vh;margin:0;padding:.6rem 0;border:1px solid var(--grey14);border-radius:.25rem;background:var(--bgcolor);box-shadow:2px 2px 10px var(--card-shadow-color);text-align:left;white-space:nowrap;overflow-y:auto;transform:scale(.8);opacity:0;visibility:hidden;transition:all .18s ease-out}.dropdown-wrapper .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .dropdown-item h4{margin:0;padding:.75rem 1rem .25rem .75rem;border-top:1px solid var(--grey14);color:var(--dark-grey);font-size:.9rem}.dropdown-wrapper .dropdown-item h4 .nav-link{padding:0}.dropdown-wrapper .dropdown-item h4 .nav-link:before{display:none}.dropdown-wrapper .dropdown-item:first-child h4{padding-top:0;border-top:0}.dropdown-wrapper .dropdown-item .nav-link{display:block;position:relative;margin-bottom:0;padding:0 1.5rem 0 1.25rem;border-bottom:none;color:var(--dark-grey);font-weight:400;line-height:1.7rem}.dropdown-wrapper .dropdown-item .nav-link.active,.dropdown-wrapper .dropdown-item .nav-link:hover{color:var(--accent-color)}.dropdown-wrapper .dropdown-item .nav-link.active:before{content:"";position:absolute;top:calc(50% - 3px);left:9px;width:0;height:0;border-top:3px solid transparent;border-left:5px solid var(--accent-color);border-bottom:3px solid transparent}.dropdown-wrapper .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .dropdown-item .dropdown-subitem{font-size:.9em}.anchor-place-holder{position:-webkit-sticky;position:sticky;top:5.6rem;max-width:820px;margin:0 auto;padding:0 2.5rem;z-index:99}@media (max-width:959px){.anchor-place-holder{padding:0 1.5rem}}.anchor-place-holder+.theme-default-content:not(.custom){padding-top:0}#anchor{display:none;position:absolute;left:calc(100% + .5rem);min-width:10rem;max-width:15rem;max-height:80vh;overflow-y:scroll}@media (min-width:1440px){.has-anchor #anchor{display:block}}#anchor::-webkit-scrollbar-track-piece{background:transparent}#anchor::-webkit-scrollbar{width:3px}#anchor::-webkit-scrollbar-thumb:vertical{background:#ddd}.theme-dark #anchor::-webkit-scrollbar-thumb:vertical{background:#333}#anchor .anchor-wrapper{position:relative;padding-left:8px}#anchor .anchor-wrapper:before{content:" ";position:absolute;top:0;left:0;bottom:0;width:2px;background:var(--border-color);z-index:-1}#anchor .anchor-wrapper>.anchor-list{margin:0}#anchor .anchor-list{padding-left:0}#anchor .anchor{position:relative;box-sizing:border-box;padding:1px 8px;list-style:none;line-height:1.5}#anchor .anchor:before{content:" ";position:absolute;z-index:2;top:0;bottom:0;left:-8px;width:2px;background:transparent}#anchor .anchor.active .anchor-link,#anchor .anchor:hover .anchor-link{color:var(--accent-color)}#anchor .anchor.active:before{background:var(--accent-color)}#anchor .anchor .anchor-link{display:inline-block;vertical-align:middle;position:relative;max-width:100%;color:var(--light-grey)}#anchor .anchor .anchor-link>div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#anchor .anchor .anchor-link.heading2{padding-left:0;font-size:14px}#anchor .anchor .anchor-link.heading3{padding-left:8px;font-size:13px}#anchor .anchor .anchor-link.heading4{padding-left:16px;font-size:12px}#anchor .anchor .anchor-link.heading5{padding-left:24px;font-size:11px}#anchor .anchor .anchor-link.heading6{padding-left:32px;font-size:10px}.nav-links{display:inline-block}.nav-links .nav-item{position:relative;display:inline-block;line-height:2rem;margin-left:1rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .nav-item>.nav-link{color:var(--dark-grey)}.nav-links .nav-item>.nav-link:after{position:absolute;content:" ";left:50%;right:50%;bottom:0;height:2px;background:var(--accent-color-l10);border-radius:1px;visibility:hidden;transition:left .2s ease-in-out,right .2s ease-in-out}.nav-links .nav-item>.nav-link.active{color:var(--accent-color)}.nav-links .nav-item>.nav-link.active:after,.nav-links .nav-item>.nav-link:hover:after{left:0;right:0;visibility:visible}.timeline-wrapper{max-width:740px;margin:0 auto;padding:40px 0;--dot-color:#fff;--dot-bar-color:#eaecef;--dot-border-color:#ddd}.theme-dark .timeline-wrapper{--dot-color:#444;--dot-bar-color:#333;--dot-border-color:#555}.timeline-wrapper #anchor{left:unset;right:0;min-width:0}.timeline-wrapper .anchor-wrapper{position:relative;z-index:10}.timeline-wrapper .timeline-content{box-sizing:border-box;position:relative;padding-left:76px;list-style:none}.timeline-wrapper .timeline-content:after{content:" ";position:absolute;top:14px;left:64px;z-index:-1;width:4px;height:calc(100% - 38px);margin-left:-2px;background:var(--dot-bar-color)}.timeline-wrapper .timeline-content .desc{position:relative;color:var(--text-color);font-size:18px}@media (min-width:1280px){.timeline-wrapper .timeline-content .desc{font-size:20px}}.timeline-wrapper .timeline-content .desc:before{content:" ";position:absolute;z-index:2;left:-12px;top:50%;width:8px;height:8px;margin-left:-6px;margin-top:-6px;background:var(--dot-color);border:2px solid var(--dot-border-color);border-radius:50%}.timeline-wrapper .timeline-content .year{margin-top:-3.1rem;margin-bottom:.5rem;padding-top:6.6rem;color:var(--text-color);font-size:26px;font-weight:700}.timeline-wrapper .timeline-content .year span{position:relative}.timeline-wrapper .timeline-content .year span:before{content:" ";position:absolute;z-index:2;left:-12px;top:50%;width:8px;height:8px;margin-left:-6px;margin-top:-6px;background:var(--dot-color);border:2px solid var(--dot-border-color);border-radius:50%}.timeline-wrapper .timeline-content .year-wrapper{padding-left:0!important}.timeline-wrapper .timeline-content .year-wrapper li{position:relative;display:flex;padding:30px 0 10px;border-bottom:1px dashed var(--border-color);list-style:none}.timeline-wrapper .timeline-content .year-wrapper li:hover{cursor:pointer}.timeline-wrapper .timeline-content .year-wrapper li:hover .date{font-size:16px;transition:font-size .3s ease-out}.timeline-wrapper .timeline-content .year-wrapper li:hover .date:before{background-color:var(--bgcolor);border-color:var(--accent-color)}.timeline-wrapper .timeline-content .year-wrapper li:hover .title{color:var(--accent-color);font-size:18px;transition:font-size .3s ease-out}.timeline-wrapper .timeline-content .year-wrapper li .date{position:absolute;right:calc(100% + 24px);text-align:right;width:40px;font-size:14px;line-height:30px}.timeline-wrapper .timeline-content .year-wrapper li .date:before{content:" ";position:absolute;z-index:2;right:-16px;top:50%;width:6px;height:6px;margin-left:-6px;margin-top:-6px;background:var(--dot-color);border:2px solid var(--dot-border-color);border-radius:50%}.timeline-wrapper .timeline-content .year-wrapper li .title{position:relative;font-size:16px;line-height:30px}@media (max-width:719px){.timeline-wrapper{margin:0 1.2rem}}.navbar .repo-link{color:var(--dark-grey);margin-left:1rem}.sidebar-nav-links .repo-link{display:block;padding:.5rem 0 .5rem 1.5rem;font-size:1.1em;line-height:1.25rem}.timeline-list-wrapper{padding:8px 0;--dot-color:#fff;--dot-bar-color:#eaecef;--dot-border-color:#ddd}.theme-dark .timeline-list-wrapper{--dot-color:#444;--dot-bar-color:#333;--dot-border-color:#555}.timeline-list-wrapper .title{cursor:pointer}.timeline-list-wrapper .title .icon{position:relative;bottom:-.125rem;width:16px;height:16px;margin:0 6px}.timeline-list-wrapper .title .num{position:relative;margin:0 2px;font-size:22px}.timeline-list-wrapper .content{overflow-y:scroll;max-height:80vh}.timeline-list-wrapper .content::-webkit-scrollbar-track-piece{background:transparent}.timeline-list-wrapper .content .timeline-list{position:relative;margin:0 8px;box-sizing:border-box;list-style:none}.timeline-list-wrapper .content .timeline-list:after{content:" ";position:absolute;top:14px;left:0;z-index:-1;margin-left:-2px;width:4px;height:calc(100% - 14px);background:var(--dot-bar-color)}.timeline-list-wrapper .content .timeline-list .year{position:relative;margin:20px 0 0;color:var(--text-color);font-size:20px;font-weight:700}.timeline-list-wrapper .content .timeline-list .year:before{content:" ";position:absolute;z-index:2;left:-20px;top:50%;margin-left:-4px;margin-top:-4px;width:8px;height:8px;background:var(--dot-color);border:1px solid var(--dot-border-color);border-radius:50%}.timeline-list-wrapper .content .timeline-list .year-wrapper{padding-left:0!important}.timeline-list-wrapper .content .timeline-list .year-wrapper li{position:relative;display:flex;padding:12px 0 4px;list-style:none;border-bottom:1px dashed var(--border-color)}.timeline-list-wrapper .content .timeline-list .year-wrapper li:hover .date{color:var(--accent-color)}.timeline-list-wrapper .content .timeline-list .year-wrapper li:hover .date:before{background:var(--accent-color);border-color:var(--dot-color)}.timeline-list-wrapper .content .timeline-list .year-wrapper li:hover .title{color:var(--accent-color)}.timeline-list-wrapper .content .timeline-list .year-wrapper li .date{width:36px;line-height:32px;display:inline-block;vertical-align:bottom;font-size:12px}.timeline-list-wrapper .content .timeline-list .year-wrapper li .date:before{content:" ";position:absolute;left:-19px;top:24px;width:6px;height:6px;margin-left:-4px;background:var(--dot-color);border-radius:50%;border:1px solid var(--dot-border-color);z-index:2}.timeline-list-wrapper .content .timeline-list .year-wrapper li .timeline-title{line-height:32px;font-size:14px;cursor:pointer}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#5b5b5b;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/docs/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3eaf7c}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:2rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#717171}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3eaf7c}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.blog-info-list{margin:8px auto;padding:8px 16px}.page .blog-info-list{background:var(--bgcolor);border-radius:6px;box-shadow:0 1px 3px 0 var(--card-shadow-color)}.page .blog-info-list:hover{box-shadow:0 2px 6px 0 var(--card-shadow-color)}.blog-info-list .switch-wrapper{display:flex;justify-content:center;margin-bottom:8px}.blog-info-list .switch-wrapper .switch-button{background-color:transparent;border-width:0;cursor:pointer;width:44px;height:44px;margin:0 8px;padding:4px;color:var(--grey3)}.blog-info-list .switch-wrapper .switch-button:focus{outline:none}.blog-info-list .switch-wrapper .switch-button .icon-wapper{width:20px;height:20px;padding:8px;border-radius:50%;background:hsla(0,0%,49.8%,.15)}.theme-dark .blog-info-list .switch-wrapper .switch-button .icon-wapper{background:hsla(0,0%,100%,.15)}.blog-info-list .switch-wrapper .switch-button .icon-wapper:hover{cursor:pointer}.theme-light .blog-info-list .switch-wrapper .switch-button .icon-wapper.active{background:var(--accent-color-l10)}.theme-dark .blog-info-list .switch-wrapper .switch-button .icon-wapper.active{background:var(--accent-color-d10)}.blog-info-list .switch-wrapper .switch-button .icon-wapper .icon{width:100%;height:100%}.blog-info-list .category-wrapper,.blog-info-list .sticky-article-wrapper,.blog-info-list .tag-wrapper{padding:8px 0}.blog-info-list .category-wrapper .title,.blog-info-list .sticky-article-wrapper .title,.blog-info-list .tag-wrapper .title{cursor:pointer}.blog-info-list .category-wrapper .title .icon,.blog-info-list .sticky-article-wrapper .title .icon,.blog-info-list .tag-wrapper .title .icon{position:relative;bottom:-.125rem;width:16px;height:16px;margin:0 6px}.blog-info-list .category-wrapper .title .num,.blog-info-list .sticky-article-wrapper .title .num,.blog-info-list .tag-wrapper .title .num{position:relative;margin:0 2px;font-size:22px}.blog-info-list .sticky-article-wrapper .sticky-article-list{margin:8px auto}.blog-info-list .sticky-article-wrapper .sticky-article-list .sticky-article{padding:12px 8px 4px;border-bottom:1px dashed var(--grey14)}.blog-info-list .sticky-article-wrapper .sticky-article-list .sticky-article:hover{cursor:pointer;color:var(--accent-color)}.blog-info-list .category-wrapper .category-list-wrapper,.blog-info-list .tag-wrapper .tag-list-wrapper{margin:8px auto}.page .blog-info-list .timeline-list-wrapper .content{max-height:60vh}.media-links-wrapper{display:flex;justify-content:center;flex-wrap:wrap;margin:8px auto}.media-links-wrapper .media-link{width:26px;height:26px;margin:4px;transform:scale(1);transition:transform .18s ease-out .18s}.media-links-wrapper .media-link:hover{cursor:pointer;transform:scale(1.2)}.media-links-wrapper .media-link:after{--balloon-font-size:8px;padding:.3em .6em}.media-links-wrapper .media-link .icon{width:100%;height:100%}.sidebar-button{background-color:transparent;border-width:0;cursor:pointer;display:none;box-sizing:content-box;position:absolute;top:calc(50% - 1.075rem);left:1rem;width:1.25rem;height:1.25rem;padding:.45rem;font:unset;vertical-align:middle;transition:transform .2s ease-in-out}.sidebar-button:before{content:" ";margin-top:.125em}.sidebar-button:after{content:" ";margin-bottom:.125em}.sidebar-button .icon{margin:.2em 0}.sidebar-button .icon,.sidebar-button:after,.sidebar-button:before{display:block;width:100%;height:.2em;transition:transform .2s ease-in-out;border-radius:.05em;background:var(--text-color)}.sidebar-open .sidebar-button:before{transform:translateY(.4em) rotate(135deg)}.sidebar-open .sidebar-button .icon{transform:scale(0)}.sidebar-open .sidebar-button:after{transform:translateY(-.4em) rotate(-135deg)}@media (max-width:719px){.sidebar-button{display:block}}.page .blogger-info{background:var(--bgcolor)}.blogger-info .blogger{padding:8px 0;text-align:center}.blogger-info .blogger.hasIntro{cursor:pointer}.blogger-info .blogger .avatar{width:128px;height:128px;margin:0 auto}.blogger-info .blogger .avatar.round{border-radius:50%}.blogger-info .blogger .name{margin:16px auto;font-size:22px}.blogger-info .num-wrapper{display:flex;margin:0 auto 16px;width:80%}.blogger-info .num-wrapper>div{width:25%;text-align:center;font-size:13px;cursor:pointer}.blogger-info .num-wrapper>div:hover{color:var(--accent-color)}.blogger-info .num-wrapper>div .num{position:relative;margin-bottom:8px;font-weight:600;font-size:20px}.darkmode-switch{display:flex;height:22px}.darkmode-switch:hover{cursor:pointer}.darkmode-switch .item{padding:2px;border:1px solid var(--accent-color);border-left:none;line-height:1}.darkmode-switch .item:first-child{border-left:1px solid var(--accent-color)}.darkmode-switch .item.day{border-radius:4px 0 0 4px}.darkmode-switch .item.night{border-radius:0 4px 4px 0}.darkmode-switch .item .icon{width:16px;height:16px;color:var(--accent-color)}.darkmode-switch .item.active{background:var(--accent-color)}.darkmode-switch .item.active:hover{cursor:default}.darkmode-switch .item.active .icon{color:var(--white)}.darkmode-switch .switch{display:block;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.darkmode-switch .switch .label{display:block;position:relative;width:31.25px;height:17.5px;margin:0 auto;border-radius:17.5px;border:1px solid #1c1c1c;background:#3c4145;font-size:1.4em;transition:all .25s ease-in}.darkmode-switch .switch .label:hover{cursor:pointer}.darkmode-switch .switch .label:before{content:"";display:block;position:absolute;top:.5px;left:1px;width:14px;height:14px;border:1.25px solid #e3e3c7;border-radius:50%;background:#fff;transition:all .25s ease-in}.darkmode-switch .switch .label:after{content:"";display:block;position:absolute;top:62%;left:9.75px;z-index:10;width:2.8px;height:2.8px;opacity:0;background:#fff;border-radius:50%;box-shadow:0 0 #fff,.75px 0 #fff,1.5px 0 #fff,2.25px 0 #fff,2.75px 0 #fff,3.5px 0 #fff,4px 0 #fff,5.25px -.25px 0 .25px #fff,4px -1.75px 0 -.5px #fff,1.75px -1.75px 0 .25px #fff,0 0 0 1px #d3d3d3,1.5px 0 0 1px #d3d3d3,2.75px 0 0 1px #d3d3d3,4px 0 0 1px #d3d3d3,5.25px -.25px 0 1.25px #d3d3d3,4px -1.75px 0 .25px #d3d3d3,1.75px -1.75px 0 1.25px #d3d3d3;transition:opacity .1s ease-in}.darkmode-switch .switch .label .label-content{display:block;position:absolute;top:2.25px;left:52.5%;z-index:20;width:1px;height:1px;border-radius:50%;background:#fff;box-shadow:7.5px -.75px 0 0 hsla(0,0%,100%,.1),3px 2.5px 0 -.25px hsla(0,0%,100%,.1),9.5px 4.5px 0 .25px #fff,8px 8.5px 0 0 hsla(0,0%,100%,.1),5px 6px 0 .375px #fff,1.25px 9.5px 0 .25px hsla(0,0%,100%,.1);-webkit-animation:starry_star 5s ease-in-out infinite;animation:starry_star 5s ease-in-out infinite;transition:all .25s ease-in}.darkmode-switch .switch .label .label-content:before{content:"";display:block;position:absolute;top:-.5px;left:-6.25px;width:4.5px;height:4.5px;background:#fff;border-radius:50%;border:1.25px solid #e3e3c7;box-shadow:-7px 0 0 -.75px #e3e3c7,-2px 6px 0 -.5px #e3e3c7;transform-origin:-1.5px 130%;transition:all .25s ease-in}.darkmode-switch .switch .switch-input{display:none;transition:all .25s ease-in}.darkmode-switch .switch .switch-input:checked+.label{background:#9ee3fb;border:1px solid #86c3d7}.darkmode-switch .switch .switch-input:checked+.label:before{left:13.75px;background:#ffdf6d;border:1.25px solid #e1c348}.darkmode-switch .switch .switch-input:checked+.label:after{opacity:1;-webkit-animation:bounceIn .6s ease-in-out .1s;animation:bounceIn .6s ease-in-out .1s;-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards}.darkmode-switch .switch .switch-input:checked+.label>.label-content{opacity:0;box-shadow:7.5px -.75px 0 -1px hsla(0,0%,100%,.1),3px 2.5px 0 -1.25px hsla(0,0%,100%,.1),9.5px 4.5px 0 -.75px #fff,8px 8.5px 0 -1px hsla(0,0%,100%,.1),5px 6px 0 -1.375px #fff,1.25px 9.5px 0 -.75px hsla(0,0%,100%,.1);-webkit-animation:none;animation:none}.darkmode-switch .switch .switch-input:checked+.label>.label-content:before{left:6.25px;transform:rotate(70deg)}@-webkit-keyframes starry_star{50%{background:hsla(0,0%,100%,.1);box-shadow:7.5px -.75px 0 0 #fff,3px 2.5px 0 -.25px #fff,9.5px 4.5px 0 .25px hsla(0,0%,100%,.1),8px 8.5px 0 0 #fff,5px 6px 0 -.375px hsla(0,0%,100%,.1),1.25px 9.5px 0 .25px #fff}}@keyframes starry_star{50%{background:hsla(0,0%,100%,.1);box-shadow:7.5px -.75px 0 0 #fff,3px 2.5px 0 -.25px #fff,9.5px 4.5px 0 .25px hsla(0,0%,100%,.1),8px 8.5px 0 0 #fff,5px 6px 0 -.375px hsla(0,0%,100%,.1),1.25px 9.5px 0 .25px #fff}}@-webkit-keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.1)}55%{transform:scale(1.1)}75%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.1)}55%{transform:scale(1.1)}75%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}.sidebar .blog-info-wrapper .blogger-info{display:none}.page .blog-info-wrapper{position:-webkit-sticky;position:sticky;box-sizing:border-box;top:4.6rem;flex:0 0 300px;height:auto;margin-bottom:12px;transition:all .3s}@media (max-width:719px){.page .blog-info-wrapper{display:none}}.page .blog-info-wrapper .blogger-info{margin-bottom:16px;padding:8px 0;border-radius:8px;box-shadow:0 1px 3px 0 var(--card-shadow-color)}.page .blog-info-wrapper .blogger-info:hover{box-shadow:0 2px 6px 0 var(--card-shadow-color)}.article-type-wrapper{position:relative;padding-left:0;font-size:18px;font-family:Arial,Helvetica,sans-serif;font-weight:600;display:flex;justify-content:center;align-items:center;list-style:none;z-index:2}@media (max-width:419px){.article-type-wrapper{font-size:16px}}.article-type{position:relative;vertical-align:middle;margin:.3em .8em;line-height:1.2;cursor:pointer}.article-type:after{position:absolute;content:" ";left:50%;right:50%;bottom:-6px;height:2px;background:var(--accent-color);border-radius:1px;visibility:hidden;transition:left .2s ease-in-out,right .2s ease-in-out}.article-type span{transition:all .3s ease-in-out}.article-type.active{position:relative}.article-type.active span{display:inline-block;color:var(--accent-color);transform:scale(1.1)}.article-type.active:after,.article-type:hover:after{left:calc(50% - 8px);right:calc(50% - 8px);visibility:visible}.blog-page{max-width:780px;flex:1}@media (min-width:719px){.blog-page{margin:0 15px}}.blog-page .article-title{font-size:1.8rem;margin:10px 15px}.blog-hero{position:relative;color:#eee;margin-bottom:16px;height:450px;display:flex;flex-direction:column;justify-content:center}@media (max-width:719px){.blog-hero{height:350px;margin:0 -1.5rem 16px}}@media (max-width:419px){.blog-hero{margin:0 0 16px}}.blog-hero.full{height:calc(100vh - 3.6rem)!important}@media (max-width:719px){.blog-hero.full{height:calc(100vh - 3.25rem)!important}}.blog-hero.full .mask{background-position-y:top!important}.blog-hero .mask,.blog-hero .mask:after{position:absolute;top:0;bottom:0;left:0;right:0}.blog-hero .mask:after{display:block;content:" ";background:var(--light-grey);z-index:1;opacity:.2}.blog-hero>:not(.mask){position:relative;z-index:2}.blog-hero h1{margin:.5rem auto;font-size:36px}@media (max-width:959px){.blog-hero h1{font-size:30px}}@media (max-width:719px){.blog-hero h1{font-size:36px}}@media (max-width:419px){.blog-hero h1{font-size:30px}}.blog-hero .hero-logo+h1{margin:0 auto}.blog-hero .description{margin:1.2rem auto 0;font-size:20px}@media (max-width:959px){.blog-hero .description{font-size:18px}}@media (max-width:719px){.blog-hero .description{font-size:20px}}@media (max-width:419px){.blog-hero .description{font-size:18px}}.project-list{position:relative;display:flex;justify-content:flex-start;align-content:stretch;align-items:stretch;flex-wrap:wrap;font-family:sans-serif;margin-bottom:12px;z-index:2}.project-list .project{position:relative;width:calc(50% - 40px);background-color:var(--grey14);border-radius:8px;margin:6px 8px;padding:12px;transition:background-color .3s,transform .3s}@media (min-width:959px){.project-list .project{width:calc(33% - 40px)}}@media (min-width:1440px){.project-list .project{width:calc(25% - 40px)}}.project-list .project:hover{cursor:pointer;transform:scale(.98)}.project-list .project .cover{content:"";opacity:.5;top:0;left:0;bottom:0;right:0;position:absolute;z-index:1}.project-list .project .icon{position:relative;z-index:2;float:right;width:20px;height:20px}.project-list .project .name{position:relative;z-index:2;color:var(--grey3);font-size:16px;font-weight:500}.project-list .project .desc{position:relative;z-index:2;margin:6px 0;color:var(--dark-grey);font-size:13px}.project-list .project0,.theme-light .project-list .project0{background:#fde5e7}.project-list .project0:hover,.theme-light .project-list .project0:hover{background:#f9bec3}.theme-dark .project-list .project0{background:#340508}.theme-dark .project-list .project0:hover{background:#53080e}.project-list .project1,.theme-light .project-list .project1{background:#ffeee8}.project-list .project1:hover,.theme-light .project-list .project1:hover{background:#fed4c6}.theme-dark .project-list .project1{background:#441201}.theme-dark .project-list .project1:hover{background:#6d1d02}.project-list .project2,.theme-light .project-list .project2{background:#fef5e7}.project-list .project2:hover,.theme-light .project-list .project2:hover{background:#fce6c4}.theme-dark .project-list .project2{background:#3e2703}.theme-dark .project-list .project2:hover{background:#633f05}.project-list .project3,.theme-light .project-list .project3{background:#eafaf1}.project-list .project3:hover,.theme-light .project-list .project3:hover{background:#caf3db}.theme-dark .project-list .project3{background:#0c331c}.theme-dark .project-list .project3:hover{background:#12522d}.project-list .project4,.theme-light .project-list .project4{background:#e6f9ee}.project-list .project4:hover,.theme-light .project-list .project4:hover{background:#c0f1d5}.theme-dark .project-list .project4{background:#092917}.theme-dark .project-list .project4:hover{background:#0f4224}.project-list .project5,.theme-light .project-list .project5{background:#e4fcfc}.project-list .project5:hover,.theme-light .project-list .project5:hover{background:#bbf8f8}.theme-dark .project-list .project5{background:#053030}.theme-dark .project-list .project5:hover{background:#084e4e}.project-list .project6,.theme-light .project-list .project6{background:#e4f0fe}.project-list .project6:hover,.theme-light .project-list .project6:hover{background:#bbdafc}.theme-dark .project-list .project6{background:#021b36}.theme-dark .project-list .project6:hover{background:#042c57}.project-list .project7,.theme-light .project-list .project7{background:#f7f1fd}.project-list .project7:hover,.theme-light .project-list .project7:hover{background:#eadbfa}.theme-dark .project-list .project7{background:#2a0b4b}.theme-dark .project-list .project7:hover{background:#431277}.project-list .project8,.theme-light .project-list .project8{background:#fdeaf5}.project-list .project8:hover,.theme-light .project-list .project8:hover{background:#facbe5}.theme-dark .project-list .project8{background:#400626}.theme-dark .project-list .project8:hover{background:#670a3d}.page.blog{box-sizing:content-box}.page.blog .blog-page-wrapper{display:flex;justify-content:center;align-items:flex-start;margin:0 auto}@media (min-width:719px){.page.blog .blog-page-wrapper{padding:0 1rem}}@media (min-width:959px){.page.blog .blog-page-wrapper{padding:0 2rem}}@media (min-width:1440px){.page.blog .blog-page-wrapper{padding:0}}.page.blog .blog-page-wrapper .blog-home{max-width:780px;overflow:hidden;flex:1}@media (min-width:719px){.page.blog .blog-page-wrapper .blog-home{margin:0 15px}}.page.blog .theme-default-content:empty{padding:0}.theme-options{font-size:14px}.theme-options .themecolor-select{display:flex;justify-content:space-around}.theme-options .themecolor-select label{padding-right:8px}.theme-options .themecolor-select li:first-child{margin-right:8px}.theme-options .themecolor-select li span{vertical-align:middle;width:15px;height:15px;margin:0 2px;border-radius:2px}.theme-options .themecolor-select li span.default-theme{background:#3eaf7c}.theme-options .darkmode-toggle{display:flex;align-items:center;margin-top:8px}.theme-options .darkmode-toggle .desc{padding-right:8px;line-height:1.5}.theme-options .darkmode-toggle .cancel-full-screen,.theme-options .darkmode-toggle .full-screen{margin-left:.5em}.color-button{background-color:transparent;border-width:0;cursor:pointer;position:relative;width:2.25rem;height:2.25rem;margin:0 .25rem;padding:.5rem;outline:none;color:#aaa;flex-shrink:0}.color-button.select,.color-button:hover{color:var(--accent-color)}.color-button.select:hover{color:#aaa}.color-button .skin-icon{width:100%;height:100%;fill:currentcolor}.color-button .color-picker-menu{position:absolute;top:2.9rem;left:50%;min-width:100px;margin:0;padding:.5em .75em;background:var(--bgcolor);box-shadow:2px 2px 10px var(--card-shadow-color);color:var(--dark-grey);border-radius:.25em;transform:translateX(-50%);z-index:250}@media (max-width:719px){.color-button .color-picker-menu{top:2.75rem;transform:translateX(-80%)}}.color-button .color-picker-menu:before{content:"";position:absolute;top:-7px;left:50%;border-left:7px solid transparent;border-bottom:7px solid var(--bgcolor);border-right:7px solid transparent;border-top:0 solid transparent;transform:translateX(-50%)}@media (max-width:719px){.color-button .color-picker-menu:before{left:80%}}.color-button .color-picker-menu.menu-transition-enter-active,.color-button .color-picker-menu.menu-transition-leave-active{transition:all .25s ease-in-out}.color-button .color-picker-menu.menu-transition-enter,.color-button .color-picker-menu.menu-transition-leave-to{top:30px;opacity:0}.color-button .color-picker-menu ul{list-style-type:none;margin:0;padding:0}@media (max-width:719px){.color-picker .color-picker-menu{left:calc(50% - 35px)}.color-picker .color-picker-menu:before{left:calc(50% + 35px)}}.navbar{position:fixed;z-index:200;top:0;left:0;right:0;height:3.6rem;padding:.7rem 1.5rem;background:var(--bgcolor-blur);box-sizing:border-box;box-shadow:0 2px 8px var(--card-shadow-color);-webkit-backdrop-filter:saturate(200%) blur(20px);backdrop-filter:saturate(200%) blur(20px);line-height:2.2rem;transition:transform .3s ease-in-out}@media (max-width:719px){.navbar{height:3.25rem;padding:.5rem 1rem .5rem 3.4rem;line-height:2.25rem}}.hide-navbar .navbar.can-hide{transform:translateY(-100%)}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{min-width:2.2rem;height:2.2rem;margin-right:.8rem;vertical-align:top}@media (max-width:719px){.navbar .logo{min-width:2.25rem;height:2.25rem}}.theme-light .navbar .logo.light{display:inline-block}.theme-dark .navbar .logo.light,.theme-light .navbar .logo.dark{display:none}.theme-dark .navbar .logo.dark{display:inline-block}@media (max-width:719px){.navbar .can-hide{display:none}}.navbar .site-name{font-size:1.5rem;color:var(--text-color);position:relative}@media (max-width:719px){.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.navbar .links{position:absolute;top:.7rem;right:1.5rem;display:flex;box-sizing:border-box;padding-left:1.5rem;font-size:.9rem;white-space:nowrap}@media (max-width:719px){.navbar .links{padding-left:0;top:.5rem;right:1rem}}.footer-wrapper{display:flex;flex-wrap:wrap;justify-content:space-evenly;align-items:center;padding:12px 30px;border-top:1px solid var(--border-color);background:var(--bgcolor);color:var(--dark-color,#666);text-align:center}@media (min-width:719px){.has-sidebar .footer-wrapper{padding-left:18rem;border-left:30px solid transparent}}@media (max-width:419px){.footer-wrapper>div{width:100%}}.footer-wrapper .media-links-wrapper{margin:0}.footer-wrapper .footer{margin:8px 16px;font-size:14px}.footer-wrapper .copyright{margin:6px 0;font-size:13px}.page:not(.not-found)+.footer-wrapper{margin-top:-2rem}.password{background:var(--bg-color);height:86.4vh;margin-top:3.6rem;text-align:center;padding-left:18rem;display:flex;flex-direction:column;justify-content:center;align-items:center}@media (max-width:959px){.password{height:86.75vh;margin-top:3.25rem;padding-left:18rem}}@media (max-width:719px){.password{padding-left:0}}.password.expand{padding-left:0!important;margin-top:0;height:400px}.password .hint{margin-bottom:20px;font-family:Arial,Helvetica,sans-serif;font-weight:600;font-size:22px;line-height:2}.password .hint.hasTried{color:red;-webkit-animation-name:shake;animation-name:shake;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.password .input{width:80%;max-width:600px;display:flex;justify-content:center}.password .input input{flex:1;width:calc(100% - 60px);padding-left:20px;color:var(--black)!important;background:var(--bgcolor)!important;border:2px solid var(--accent-color);border-radius:22px 0 0 22px;font-size:20px;letter-spacing:.5em;line-height:2;outline:none}.password .input button{width:70px;padding-right:10px;background:var(--accent-color);color:var(--bgcolor);border-width:0;border-radius:0 22px 22px 0;font-size:20px;line-height:2;outline:none}.password .input button:hover{background:#54c290}@-webkit-keyframes shake{0%,to{transform:translateX(0)}10%{transform:translateX(-9px)}20%{transform:translateX(8px)}30%{transform:translateX(-7px)}40%{transform:translateX(6px)}50%{transform:translateX(-5px)}60%{transform:translateX(4px)}70%{transform:translateX(-3px)}80%{transform:translateX(2px)}90%{transform:translateX(-1px)}}@keyframes shake{0%,to{transform:translateX(0)}10%{transform:translateX(-9px)}20%{transform:translateX(8px)}30%{transform:translateX(-7px)}40%{transform:translateX(6px)}50%{transform:translateX(-5px)}60%{transform:translateX(4px)}70%{transform:translateX(-3px)}80%{transform:translateX(2px)}90%{transform:translateX(-1px)}}.dropdown-enter,.dropdown-leave-to{height:0!important}.mobile-dropdown-wrapper{cursor:pointer}.mobile-dropdown-wrapper .dropdown-title{background-color:transparent;border-width:0;cursor:pointer;cursor:inherit;padding:inherit;color:var(--text-color);font-family:inherit;font-size:inherit;line-height:1.4rem}.mobile-dropdown-wrapper .dropdown-title:hover{color:var(--accent-color)}.mobile-dropdown-wrapper .dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s}.theme-dark .mobile-dropdown-wrapper .dropdown-title .arrow{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.mobile-dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(180deg)}.mobile-dropdown-wrapper .dropdown-title .arrow.right{transform:rotate(90deg)}.mobile-dropdown-wrapper .dropdown-title .arrow.left{transform:rotate(-90deg)}.mobile-dropdown-wrapper .nav-dropdown{margin-top:.25rem;transition:height .1s ease-out;overflow:hidden}.mobile-dropdown-wrapper .dropdown-item{color:inherit;line-height:1.7rem}.mobile-dropdown-wrapper .dropdown-item h4{margin:0;padding-left:1.25rem;font-size:15px;line-height:1.7}.mobile-dropdown-wrapper .dropdown-item h4 .nav-link{padding:0}.mobile-dropdown-wrapper .dropdown-item h4 .nav-link:before{display:none}.mobile-dropdown-wrapper .dropdown-item .nav-link{display:block;position:relative;margin-bottom:0;padding:0 1.5rem 0 1.25rem;border-bottom:none;font-weight:400;line-height:1.7rem}.mobile-dropdown-wrapper .dropdown-item .nav-link.active,.mobile-dropdown-wrapper .dropdown-item .nav-link:hover{color:var(--accent-color)}.mobile-dropdown-wrapper .dropdown-item .nav-link.active:before{content:"";position:absolute;top:calc(50% - 3px);left:9px;width:0;height:0;border-top:3px solid transparent;border-left:5px solid var(--accent-color);border-bottom:3px solid transparent}.mobile-dropdown-wrapper .dropdown-item>.nav-link{font-size:15px;line-height:2rem}.mobile-dropdown-wrapper .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.mobile-dropdown-wrapper .dropdown-item .dropdown-subitem{font-size:.9em;padding-left:.5rem}.sidebar-nav-links{display:none;padding:.5rem 0 .75rem;border-bottom:1px solid var(--border-color)}@media (max-width:719px){.sidebar-nav-links{display:block}}.sidebar-nav-links ul{padding:0;margin:.25rem 0 0;list-style-type:none}.sidebar-nav-links .nav-item{position:relative;display:block;padding:.5rem 0 .5rem 1.5rem;font-size:1.1em;line-height:1.25rem}.sidebar-nav-links .nav-item:first-child{margin-left:0}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){color:inherit;cursor:auto}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{padding-left:1.75rem;font-weight:400;line-height:1.5}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.8}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{border-left:none;font-size:.95em}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{display:flex;box-sizing:border-box;width:100%;margin:0;padding:.35rem 1rem .35rem 1.25rem;border-left:.25rem solid transparent;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;color:var(--text-color);font-size:1.1em;cursor:pointer;transition:color .15s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sidebar-heading.open{color:inherit}.sidebar-heading.clickable:hover{background-color:var(--bgcolor-light)}.sidebar-heading.clickable.active{border-left-color:var(--accent-color);color:var(--accent-color);font-weight:500}.sidebar-heading .iconfont{margin-right:.25em}.sidebar-heading .title{flex:1}.sidebar-heading .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:all .3s;font-size:1.5em;float:right}.theme-dark .sidebar-heading .arrow{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.sidebar-heading .arrow.down{transform:rotate(180deg)}.sidebar-heading .arrow.right{transform:rotate(90deg)}.sidebar-heading .arrow.left{transform:rotate(-90deg)}.sidebar-group-items{font-size:.95em;transition:height .1s ease-out;overflow:hidden}.sidebar-links ul{padding:0;margin:0;list-style-type:none}.sidebar-links ul.sidebar-sub-headers{padding-left:1rem;font-size:.95em}@media (min-width:1440px){.has-anchor .sidebar-links ul.sidebar-sub-headers{display:none}}a.sidebar-link{display:inline-block;box-sizing:border-box;width:100%;padding:.35rem 1rem .35rem 1.25rem;border-left:.2rem solid transparent;color:var(--text-color);font-size:1em;line-height:1.5;font-weight:400}a.sidebar-link.heading3{padding-left:1.25rem!important}a.sidebar-link.heading4{padding-left:1.75rem!important}a.sidebar-link.heading5{padding-left:2.25rem!important}a.sidebar-link.heading6{padding-left:2.75rem!important}a.sidebar-link .iconfont{margin-right:.25em}a.sidebar-link:hover{background-color:var(--bgcolor-light)}a.sidebar-link.active{border-left-color:var(--accent-color);background-color:var(--accent-color-a15);font-weight:500}a.sidebar-link.active,a.sidebar-link.active .iconfont{color:var(--accent-color)}.sidebar-group a.sidebar-link{padding-left:1.75rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{background-color:transparent;font-weight:500}.sidebar{position:fixed;z-index:150;top:3.6rem;left:0;bottom:0;box-sizing:border-box;width:18rem;margin:0;background:var(--bgcolor-blur);box-shadow:2px 0 4px var(--card-shadow-color);-webkit-backdrop-filter:saturate(200%) blur(20px);backdrop-filter:saturate(200%) blur(20px);font-size:16px;overflow-y:auto}@media (max-width:719px){.sidebar{top:3.25rem}.theme-container.hide-navbar .sidebar{top:0}}.theme-container:not(.has-navbar) .sidebar{top:0}.sidebar a{display:inline-block;color:var(--text-color)}.sidebar .blogger-info.mobile,.sidebar .blogger-info.mobile+hr{display:none}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:959px){.sidebar{width:18rem;font-size:15px}}@media (min-width:719px){.theme-container:not(.has-sidebar) .sidebar{display:none}}@media (max-width:719px){.sidebar{transform:translateX(-100%);transition:transform .2s ease;box-shadow:none}.theme-container.sidebar-open .sidebar{transform:translateX(0);box-shadow:2px 0 8px var(--card-shadow-color)}.theme-container:not(.has-navbar) .sidebar{top:0}.sidebar .blogger-info.mobile{display:block}.sidebar .blogger-info.mobile+hr{display:block;margin-top:16px}.sidebar>.sidebar-links{padding:1rem 0}}.theme-container{min-height:100vh}.sidebar-mask{position:fixed;z-index:9;top:0;left:0;width:100vw;height:100vh;display:none}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-dark .page-404-icon{filter:invert(70%)}.page.not-found{display:block;max-width:960px;margin:0 auto;padding:4.6rem 2rem 2rem!important;text-align:center}.page.not-found .page-404-icon{width:50%;margin:0 auto}.page.not-found .action-button{display:inline-block;box-sizing:border-box;margin:0 .25rem;padding:.5rem 1rem;border-width:0;border-bottom:1px solid var(--accent-color-d10);border-radius:.25rem;background:var(--accent-color);color:var(--white);font-size:1rem;outline:none;transition:background .1s ease}.page.not-found .action-button:hover{cursor:pointer;background:var(--accent-color-l10)}.page.blog{box-sizing:border-box;min-height:100vh;margin:0 auto;padding-top:3.6rem;padding-bottom:2rem;background:var(--bgcolor-light);display:flex;flex-direction:column;justify-content:space-between}@media (max-width:719px){.page.blog{padding:3.25rem 1.5rem 2rem}}@media (max-width:419px){.page.blog{padding-left:0;padding-right:0}}.blog-page-wrapper{box-sizing:border-box;width:100%;margin:0 auto;display:flex;justify-content:center;align-items:flex-start}@media (min-width:719px){.blog-page-wrapper{padding:0 1rem}}@media (min-width:959px){.blog-page-wrapper{padding:0 2rem}}@media (min-width:1440px){.blog-page-wrapper{padding:0}}.home{display:block;max-width:960px;min-height:96.4vh;padding:3.6rem 2rem 0;margin:0 auto;overflow-x:hidden}@media (max-width:959px){.home{min-height:96.75vh;padding-top:3.25rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}}.home .hero{text-align:center}@media (min-width:959px){.home .hero{display:flex;justify-content:space-evenly;align-items:center;text-align:left}}.home .hero img{display:block;max-width:100%;max-height:320px;margin:0}@media (max-width:959px){.home .hero img{max-height:280px;margin:3rem auto 1.5rem}}@media (max-width:719px){.home .hero img{max-height:240px;margin:2rem auto 1.2rem}}@media (max-width:419px){.home .hero img{max-height:210px;margin:1.5rem auto 1rem}}.theme-light .home .hero img.light{display:block}.theme-dark .home .hero img.light,.theme-light .home .hero img.dark{display:none}.theme-dark .home .hero img.dark{display:block}.home .hero h1{font-size:3rem}@media (max-width:719px){.home .hero h1{font-size:2.5rem}}@media (max-width:419px){.home .hero h1{font-size:2rem}}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}@media (max-width:719px){.home .hero .action,.home .hero .description,.home .hero h1{margin:1.5rem auto}}@media (max-width:419px){.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}}.home .hero .description{max-width:35rem;color:var(--text-color-l40);font-size:1.6rem;line-height:1.3}@media (max-width:719px){.home .hero .description{font-size:1.4rem}}@media (max-width:419px){.home .hero .description{font-size:1.2rem}}.home .hero .action-button{display:inline-block;margin:.6rem .8rem;padding:1rem 1.5rem;border:2px solid var(--accent-color);border-radius:2rem;color:var(--accent-color);font-size:1.2rem;transition:background .1s ease;overflow:hidden}@media (max-width:719px){.home .hero .action-button{padding:.8rem 1.2rem;font-size:1.1rem}}@media (max-width:419px){.home .hero .action-button{font-size:1rem}}.home .hero .action-button.primary,.home .hero .action-button:hover{color:var(--white);background-color:var(--accent-color)}.home .hero .action-button.primary:hover{border-color:var(--accent-color-l10);background-color:var(--accent-color-l10)}.theme-dark .home .hero .action-button.primary:hover{border-color:var(--accent-color-d10);background-color:var(--accent-color-d10)}.home .features{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;align-content:stretch;margin:0 -2rem;padding:1.2rem 0;border-top:1px solid var(--border-color)}@media (max-width:419px){.home .features{margin:0 -1.5rem}}.home .features .feature{display:flex;flex-direction:column;justify-content:center;flex-basis:calc(33% - 4rem);margin:.5rem;padding:0 1.5rem;border-radius:.5rem;transition:transform .3s,box-shadow .3s;overflow:hidden}@media (max-width:959px){.home .features .feature{flex-basis:calc(50% - 4rem)}}@media (max-width:719px){.home .features .feature{font-size:.95rem}}@media (max-width:419px){.home .features .feature{flex-basis:100%;font-size:.9rem;margin:.5rem 0;border-radius:0}}.home .features .feature.link{cursor:pointer}.home .features .feature:hover{transform:scale(1.05);box-shadow:0 2px 12px 0 var(--card-shadow-color)}.home .features .feature h2{margin-bottom:.25rem;border-bottom:none;color:var(--text-color-l10);font-size:1.25rem;font-weight:500}@media (max-width:419px){.home .features .feature h2{font-size:1.2rem}}.home .features .feature p{margin-top:0;color:var(--text-color-l25)}.home .theme-default-content{padding-bottom:1.5rem}.home .features .feature0,.theme-light .home .features .feature0{background:#fde5e7}.theme-dark .home .features .feature0{background:#340508}.home .features .feature1,.theme-light .home .features .feature1{background:#ffeee8}.theme-dark .home .features .feature1{background:#441201}.home .features .feature2,.theme-light .home .features .feature2{background:#fef5e7}.theme-dark .home .features .feature2{background:#3e2703}.home .features .feature3,.theme-light .home .features .feature3{background:#eafaf1}.theme-dark .home .features .feature3{background:#0c331c}.home .features .feature4,.theme-light .home .features .feature4{background:#e6f9ee}.theme-dark .home .features .feature4{background:#092917}.home .features .feature5,.theme-light .home .features .feature5{background:#e4fcfc}.theme-dark .home .features .feature5{background:#053030}.home .features .feature6,.theme-light .home .features .feature6{background:#e4f0fe}.theme-dark .home .features .feature6{background:#021b36}.home .features .feature7,.theme-light .home .features .feature7{background:#f7f1fd}.theme-dark .home .features .feature7{background:#2a0b4b}.home .features .feature8,.theme-light .home .features .feature8{background:#fdeaf5}.theme-dark .home .features .feature8{background:#400626}.page .page-title{max-width:820px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page .page-title{padding:1.5rem}}@media (max-width:419px){.page .page-title{padding:1rem 1.5rem}}.page .page-title{padding-bottom:.2rem;position:relative;z-index:1}.page .page-title h1{margin-top:-3.1rem!important;padding-top:4.6rem!important;margin-bottom:.5rem}.page .page-title h1 .iconfont{color:var(--accent-color,#3eaf7c);font-size:.9em}.page .page-title+.theme-default-content:not(.custom){padding-top:0}.page .page-info{display:flex;justify-content:flex-start;align-content:stretch;align-items:center;flex-wrap:wrap;color:var(--dark-grey,#666);font-size:14px;font-family:Arial,Helvetica,sans-serif}.page .page-info>span{display:flex;align-items:center;flex-shrink:0;margin-right:.5em;line-height:2}@media (min-width:1440px){.page .page-info>span{font-size:1.1em}}@media (max-width:419px){.page .page-info>span{font-size:.875em}}.page .page-info>span.origin{display:inline-block;position:relative;vertical-align:middle;margin:0 .5em;padding:0 .5em;border:.5px solid var(--dark-grey);border-radius:.75em;background:var(--bg-color);font-size:.75em;line-height:1.5;overflow:hidden}.page .page-info .icon{width:1em;height:1em;margin-right:.25em}.page .theme-default-content:not(.custom)>h1:first-child{display:none}.page-meta{max-width:820px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-meta{padding:1.5rem}}@media (max-width:419px){.page-meta{padding:1rem 1.5rem}}.page-meta{padding-top:12px;padding-bottom:12px;font-family:Arial,Helvetica,sans-serif;overflow:auto}.page-meta .meta-item .label{font-weight:500;color:var(--text-color-l25)}.page-meta .meta-item .info{font-weight:400;color:var(--dark-grey)}.page-meta .edit-link{display:inline-block;font-size:14px}.page-meta .edit-link .icon{position:relative;bottom:-.125em;width:1em;height:1em;color:var(--accent-color)}@media (max-width:719px){.page-meta .edit-link{margin-bottom:8px}}.page-meta .edit-link a{color:var(--accent-color-l10)}.page-meta .update-time{float:right;font-size:14px}@media (max-width:719px){.page-meta .update-time{float:none;font-size:13px;text-align:left}}.page-meta .contributors{font-size:14px;text-align:right}@media (max-width:719px){.page-meta .contributors{font-size:13px;text-align:left}}.page-nav{max-width:820px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:1.5rem}}@media (max-width:419px){.page-nav{padding:1rem 1.5rem}}.page-nav{padding-top:12px;padding-bottom:0;font-family:Arial,Helvetica,sans-serif}.page-nav .inner{min-height:32px;margin-top:0;border-top:1px solid var(--border-color);padding-top:16px;overflow:auto}.page-nav .next .icon,.page-nav .prev .icon{position:relative;top:.125em;width:1em;height:1em;color:var(--accent-color)}.page-nav .next{float:right}.page{display:block;box-sizing:border-box;min-height:100vh;padding-left:18rem;padding-bottom:2rem;background:var(--bgcolor)}@media (max-width:719px){.page{min-height:100vh}}@media (max-width:959px){.page{padding-left:18rem}}@media (max-width:719px){.page{padding-left:0}}@media (min-width:719px){.theme-container:not(.has-sidebar) .page{padding-left:0}}@media (min-width:1440px){.has-anchor .page:not(.blog){padding-right:16rem}}.presentation .md-presentation{min-width:100vw;min-height:100vh}.presentation .back-button,.presentation .home-button,.presentation .menu-button{background-color:transparent;border-width:0;cursor:pointer;box-sizing:content-box;position:fixed;bottom:2rem;width:1rem;height:1rem;padding:.5rem;border-radius:50%;background:#bbb;color:var(--white);outline:none}.presentation .back-button:hover,.presentation .home-button:hover,.presentation .menu-button:hover{background:var(--accent-color)}.theme-dark .presentation .back-button,.theme-dark .presentation .home-button,.theme-dark .presentation .menu-button{background:#666}.theme-dark .presentation .back-button:hover,.theme-dark .presentation .home-button:hover,.theme-dark .presentation .menu-button:hover{background:var(--accent-color)}.presentation .menu-button{left:2rem;transition:transform .2s ease-in-out;vertical-align:middle;z-index:50}.presentation .menu-button:before{content:" ";margin-top:.125em}.presentation .menu-button:after{content:" ";margin-bottom:.125em}.presentation .menu-button .icon{margin:.2em 0}.presentation .menu-button .icon,.presentation .menu-button:after,.presentation .menu-button:before{display:block;width:100%;height:.2em;transition:transform .2s ease-in-out;border-radius:.05em;background:var(--white)}.presentation .active .menu-button:before{transform:translateY(.4em) rotate(135deg)}.presentation .active .menu-button .icon{transform:scale(0)}.presentation .active .menu-button:after{transform:translateY(-.4em) rotate(-135deg)}.presentation .back-button{left:2rem;opacity:0;transition:left .2s ease-out,opacity .2s ease-out;z-index:49;fill:var(--white)}.presentation .active .back-button{left:4.5rem;opacity:1}.presentation .home-button{left:2rem;opacity:0;transition:left .2s ease-out,opacity .2s ease-out;z-index:48;fill:var(--white)}.presentation .active .home-button{left:7rem;opacity:1} \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.10824af7.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.10824af7.woff deleted file mode 100644 index b804d7b3..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.10824af7.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.56573229.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.56573229.ttf deleted file mode 100644 index c6f9a5e7..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.56573229.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.66c67820.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.66c67820.woff2 deleted file mode 100644 index 0acaaff0..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_AMS-Regular.66c67820.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Caligraphic-Bold.497bf407.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Caligraphic-Bold.497bf407.ttf deleted file mode 100644 index 9ff4a5e0..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Caligraphic-Bold.497bf407.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Caligraphic-Regular.e6fb499f.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Caligraphic-Regular.e6fb499f.ttf deleted file mode 100644 index f522294f..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Caligraphic-Regular.e6fb499f.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.40934fc0.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.40934fc0.woff deleted file mode 100644 index e7730f66..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.40934fc0.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.796f3797.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.796f3797.woff2 deleted file mode 100644 index 395f28be..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.796f3797.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.b9d7c449.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.b9d7c449.ttf deleted file mode 100644 index 4e98259c..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Bold.b9d7c449.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.97a699d8.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.97a699d8.ttf deleted file mode 100644 index b8461b27..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.97a699d8.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.e435cda5.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.e435cda5.woff deleted file mode 100644 index acab069f..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.e435cda5.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.f9e6a99f.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.f9e6a99f.woff2 deleted file mode 100644 index 735f6948..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Fraktur-Regular.f9e6a99f.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.4cdba646.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.4cdba646.woff deleted file mode 100644 index f38136ac..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.4cdba646.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.8e431f7e.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.8e431f7e.ttf deleted file mode 100644 index 4060e627..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.8e431f7e.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.a9382e25.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.a9382e25.woff2 deleted file mode 100644 index ab2ad21d..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Bold.a9382e25.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.52fb39b0.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.52fb39b0.ttf deleted file mode 100644 index dc007977..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.52fb39b0.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.5f875f98.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.5f875f98.woff deleted file mode 100644 index 67807b0b..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.5f875f98.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.d8737343.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.d8737343.woff2 deleted file mode 100644 index 5931794d..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-BoldItalic.d8737343.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.39349e0a.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.39349e0a.ttf deleted file mode 100644 index 0e9b0f35..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.39349e0a.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.65297062.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.65297062.woff2 deleted file mode 100644 index b50920e1..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.65297062.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.8ffd28f6.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.8ffd28f6.woff deleted file mode 100644 index 6f43b594..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Italic.8ffd28f6.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.818582da.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.818582da.ttf deleted file mode 100644 index dd45e1ed..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.818582da.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.f1cdb692.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.f1cdb692.woff deleted file mode 100644 index 21f58129..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.f1cdb692.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.f8a7f19f.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.f8a7f19f.woff2 deleted file mode 100644 index eb24a7ba..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Main-Regular.f8a7f19f.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.1320454d.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.1320454d.woff2 deleted file mode 100644 index 29657023..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.1320454d.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.48155e43.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.48155e43.woff deleted file mode 100644 index 0ae390d7..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.48155e43.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.6589c4f1.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.6589c4f1.ttf deleted file mode 100644 index 728ce7a1..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-BoldItalic.6589c4f1.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.d8b7a801.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.d8b7a801.woff2 deleted file mode 100644 index 215c143f..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.d8b7a801.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.ed7aea12.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.ed7aea12.woff deleted file mode 100644 index eb5159d4..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.ed7aea12.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.fe5ed587.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.fe5ed587.ttf deleted file mode 100644 index 70d559b4..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Math-Italic.fe5ed587.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.0e897d27.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.0e897d27.woff deleted file mode 100644 index 8d47c02d..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.0e897d27.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.ad546b47.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.ad546b47.woff2 deleted file mode 100644 index cfaa3bda..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.ad546b47.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.f2ac7312.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.f2ac7312.ttf deleted file mode 100644 index 2f65a8a3..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Bold.f2ac7312.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.e934cbc8.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.e934cbc8.woff2 deleted file mode 100644 index 349c06dc..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.e934cbc8.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.ef725de5.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.ef725de5.woff deleted file mode 100644 index 7e02df96..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.ef725de5.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.f60b4a34.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.f60b4a34.ttf deleted file mode 100644 index d5850df9..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Italic.f60b4a34.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.1ac3ed6e.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.1ac3ed6e.woff2 deleted file mode 100644 index a90eea85..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.1ac3ed6e.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.3243452e.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.3243452e.ttf deleted file mode 100644 index 537279f6..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.3243452e.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.5f8637ee.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.5f8637ee.woff deleted file mode 100644 index 31b84829..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_SansSerif-Regular.5f8637ee.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Script-Regular.a189c37d.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Script-Regular.a189c37d.ttf deleted file mode 100644 index fd679bf3..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Script-Regular.a189c37d.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Script-Regular.a82fa2a7.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Script-Regular.a82fa2a7.woff deleted file mode 100644 index 0e7da821..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Script-Regular.a82fa2a7.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size1-Regular.0d8d9204.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size1-Regular.0d8d9204.ttf deleted file mode 100644 index 871fd7d1..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size1-Regular.0d8d9204.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size2-Regular.1fdda0e5.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size2-Regular.1fdda0e5.ttf deleted file mode 100644 index 7a212caf..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size2-Regular.1fdda0e5.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size4-Regular.27a23ee6.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size4-Regular.27a23ee6.ttf deleted file mode 100644 index 74f08921..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Size4-Regular.27a23ee6.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.0e046058.woff b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.0e046058.woff deleted file mode 100644 index 2432419f..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.0e046058.woff and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.6bf42875.ttf b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.6bf42875.ttf deleted file mode 100644 index c83252c5..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.6bf42875.ttf and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.b8b8393d.woff2 b/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.b8b8393d.woff2 deleted file mode 100644 index 771f1af7..00000000 Binary files a/docs/docs/.vuepress/dist/assets/fonts/KaTeX_Typewriter-Regular.b8b8393d.woff2 and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/img/danger-dark.7b1d6aa1.svg b/docs/docs/.vuepress/dist/assets/img/danger-dark.7b1d6aa1.svg deleted file mode 100644 index 155256b3..00000000 --- a/docs/docs/.vuepress/dist/assets/img/danger-dark.7b1d6aa1.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/danger.b143eda2.svg b/docs/docs/.vuepress/dist/assets/img/danger.b143eda2.svg deleted file mode 100644 index e95d7666..00000000 --- a/docs/docs/.vuepress/dist/assets/img/danger.b143eda2.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/default-skin.b257fa9c.svg b/docs/docs/.vuepress/dist/assets/img/default-skin.b257fa9c.svg deleted file mode 100644 index 9d5f0c6a..00000000 --- a/docs/docs/.vuepress/dist/assets/img/default-skin.b257fa9c.svg +++ /dev/null @@ -1 +0,0 @@ -default-skin 2 \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/hero.b62ddd9c.jpg b/docs/docs/.vuepress/dist/assets/img/hero.b62ddd9c.jpg deleted file mode 100644 index 7f3f61ac..00000000 Binary files a/docs/docs/.vuepress/dist/assets/img/hero.b62ddd9c.jpg and /dev/null differ diff --git a/docs/docs/.vuepress/dist/assets/img/info-dark.f8a43cf6.svg b/docs/docs/.vuepress/dist/assets/img/info-dark.f8a43cf6.svg deleted file mode 100644 index b530e2ef..00000000 --- a/docs/docs/.vuepress/dist/assets/img/info-dark.f8a43cf6.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/info.88826912.svg b/docs/docs/.vuepress/dist/assets/img/info.88826912.svg deleted file mode 100644 index 1b2f3ee7..00000000 --- a/docs/docs/.vuepress/dist/assets/img/info.88826912.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/search.83621669.svg b/docs/docs/.vuepress/dist/assets/img/search.83621669.svg deleted file mode 100644 index 03d83913..00000000 --- a/docs/docs/.vuepress/dist/assets/img/search.83621669.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/docs/.vuepress/dist/assets/img/tip-dark.075a244c.svg b/docs/docs/.vuepress/dist/assets/img/tip-dark.075a244c.svg deleted file mode 100644 index 42b3adb4..00000000 --- a/docs/docs/.vuepress/dist/assets/img/tip-dark.075a244c.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/tip.a2b80aa5.svg b/docs/docs/.vuepress/dist/assets/img/tip.a2b80aa5.svg deleted file mode 100644 index 71b0a53d..00000000 --- a/docs/docs/.vuepress/dist/assets/img/tip.a2b80aa5.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/warning-dark.aac7e30c.svg b/docs/docs/.vuepress/dist/assets/img/warning-dark.aac7e30c.svg deleted file mode 100644 index 4b071f4c..00000000 --- a/docs/docs/.vuepress/dist/assets/img/warning-dark.aac7e30c.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/img/warning.ec428b6d.svg b/docs/docs/.vuepress/dist/assets/img/warning.ec428b6d.svg deleted file mode 100644 index 630a73ad..00000000 --- a/docs/docs/.vuepress/dist/assets/img/warning.ec428b6d.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/39.4e5fb72c.js b/docs/docs/.vuepress/dist/assets/js/39.4e5fb72c.js deleted file mode 100644 index 99697e13..00000000 --- a/docs/docs/.vuepress/dist/assets/js/39.4e5fb72c.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{477:function(n,w,o){}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/40.141b284a.js b/docs/docs/.vuepress/dist/assets/js/40.141b284a.js deleted file mode 100644 index 4fbf9de0..00000000 --- a/docs/docs/.vuepress/dist/assets/js/40.141b284a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{478:function(n,w,o){}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/41.fa0e8741.js b/docs/docs/.vuepress/dist/assets/js/41.fa0e8741.js deleted file mode 100644 index 2b58d362..00000000 --- a/docs/docs/.vuepress/dist/assets/js/41.fa0e8741.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{479:function(n,w,o){}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/42.566edb20.js b/docs/docs/.vuepress/dist/assets/js/42.566edb20.js deleted file mode 100644 index 58c35aa1..00000000 --- a/docs/docs/.vuepress/dist/assets/js/42.566edb20.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{480:function(n,w,o){}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/43.ba904a47.js b/docs/docs/.vuepress/dist/assets/js/43.ba904a47.js deleted file mode 100644 index 61ddfcbf..00000000 --- a/docs/docs/.vuepress/dist/assets/js/43.ba904a47.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{476:function(n,e,t){"use strict";t.r(e),t.d(e,"register",(function(){return o})),t.d(e,"unregister",(function(){return c}));var r;function o(n,e){void 0===e&&(e={});var t=e.registrationOptions;void 0===t&&(t={}),delete e.registrationOptions;var o=function(n){for(var t=[],r=arguments.length-1;r-- >0;)t[r]=arguments[r+1];e&&e[n]&&e[n].apply(e,t)};"serviceWorker"in navigator&&r.then((function(){Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))?(!function(n,e,t){fetch(n).then((function(r){404===r.status?(e("error",new Error("Service worker not found at "+n)),c()):-1===r.headers.get("content-type").indexOf("javascript")?(e("error",new Error("Expected "+n+" to have javascript content-type, but received "+r.headers.get("content-type"))),c()):a(n,e,t)})).catch((function(n){return i(e,n)}))}(n,o,t),navigator.serviceWorker.ready.then((function(n){o("ready",n)})).catch((function(n){return i(o,n)}))):(a(n,o,t),navigator.serviceWorker.ready.then((function(n){o("ready",n)})).catch((function(n){return i(o,n)})))}))}function i(n,e){navigator.onLine||n("offline"),n("error",e)}function a(n,e,t){navigator.serviceWorker.register(n,t).then((function(n){e("registered",n),n.waiting?e("updated",n):n.onupdatefound=function(){e("updatefound",n);var t=n.installing;t.onstatechange=function(){"installed"===t.state&&(navigator.serviceWorker.controller?e("updated",n):e("cached",n))}}})).catch((function(n){return i(e,n)}))}function c(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(n){n.unregister()})).catch((function(n){return i(emit,n)}))}"undefined"!=typeof window&&(r="undefined"!=typeof Promise?new Promise((function(n){return window.addEventListener("load",n)})):{then:function(n){return window.addEventListener("load",n)}})}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/app.9d927415.js b/docs/docs/.vuepress/dist/assets/js/app.9d927415.js deleted file mode 100644 index 6abdda55..00000000 --- a/docs/docs/.vuepress/dist/assets/js/app.9d927415.js +++ /dev/null @@ -1,19 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],c=t[1],l=t[2],p=0,d=[];p=0&&Math.floor(t)===t&&isFinite(e)}function f(e){return i(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function h(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===l?JSON.stringify(e,null,2):String(e)}function m(e){var t=parseFloat(e);return isNaN(t)?e:t}function v(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o-1)return e.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function _(e,t){return b.call(e,t)}function w(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var x=/-(\w)/g,C=w((function(e){return e.replace(x,(function(e,t){return t?t.toUpperCase():""}))})),k=w((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),S=/\B([A-Z])/g,T=w((function(e){return e.replace(S,"-$1").toLowerCase()}));var O=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function $(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function j(e,t){for(var n in t)e[n]=t[n];return e}function A(e){for(var t={},n=0;n0,K=Z&&Z.indexOf("edge/")>0,X=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===W),G=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),ee={}.watch,te=!1;if(z)try{var ne={};Object.defineProperty(ne,"passive",{get:function(){te=!0}}),window.addEventListener("test-passive",null,ne)}catch(e){}var re=function(){return void 0===J&&(J=!z&&!V&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),J},oe=z&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ie(e){return"function"==typeof e&&/native code/.test(e.toString())}var ae,se="undefined"!=typeof Symbol&&ie(Symbol)&&"undefined"!=typeof Reflect&&ie(Reflect.ownKeys);ae="undefined"!=typeof Set&&ie(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ce=E,le=0,ue=function(){this.id=le++,this.subs=[]};ue.prototype.addSub=function(e){this.subs.push(e)},ue.prototype.removeSub=function(e){y(this.subs,e)},ue.prototype.depend=function(){ue.target&&ue.target.addDep(this)},ue.prototype.notify=function(){var e=this.subs.slice();for(var t=0,n=e.length;t-1)if(i&&!_(o,"default"))a=!1;else if(""===a||a===T(e)){var c=Be(String,o.type);(c<0||s0&&(ut((c=e(c,(n||"")+"_"+r))[0])&&ut(u)&&(p[l]=ge(u.text+c[0].text),c.shift()),p.push.apply(p,c)):s(c)?ut(u)?p[l]=ge(u.text+c):""!==c&&p.push(ge(c)):ut(c)&&ut(u)?p[l]=ge(u.text+c.text):(a(t._isVList)&&i(c.tag)&&o(c.key)&&i(n)&&(c.key="__vlist"+n+"_"+r+"__"),p.push(c)));return p}(e):void 0}function ut(e){return i(e)&&i(e.text)&&!1===e.isComment}function pt(e,t){if(e){for(var n=Object.create(null),r=se?Reflect.ownKeys(e):Object.keys(e),o=0;o0,a=e?!!e.$stable:!i,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(a&&n&&n!==r&&s===n.$key&&!i&&!n.$hasNormal)return n;for(var c in o={},e)e[c]&&"$"!==c[0]&&(o[c]=mt(t,c,e[c]))}else o={};for(var l in t)l in o||(o[l]=vt(t,l));return e&&Object.isExtensible(e)&&(e._normalized=o),B(o,"$stable",a),B(o,"$key",s),B(o,"$hasNormal",i),o}function mt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:lt(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function vt(e,t){return function(){return e[t]}}function gt(e,t){var n,r,o,a,s;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,o=e.length;rdocument.createEvent("Event").timeStamp&&(cn=function(){return ln.now()})}function un(){var e,t;for(sn=cn(),on=!0,en.sort((function(e,t){return e.id-t.id})),an=0;anan&&en[n].id>e.id;)n--;en.splice(n+1,0,e)}else en.push(e);rn||(rn=!0,tt(un))}}(this)},dn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||c(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Ne(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},dn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},dn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},dn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var fn={enumerable:!0,configurable:!0,get:E,set:E};function hn(e,t,n){fn.get=function(){return this[t][n]},fn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,fn)}function mn(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},o=e.$options._propKeys=[];e.$parent&&Ce(!1);var i=function(i){o.push(i);var a=Re(i,t,n,e);Te(r,i,a),i in e||hn(e,"_props",i)};for(var a in t)i(a);Ce(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var n in t)e[n]="function"!=typeof t[n]?E:O(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;u(t=e._data="function"==typeof t?function(e,t){de();try{return e.call(t,t)}catch(e){return Ne(e,t,"data()"),{}}finally{fe()}}(t,e):t||{})||(t={});var n=Object.keys(t),r=e.$options.props,o=(e.$options.methods,n.length);for(;o--;){var i=n[o];0,r&&_(r,i)||(a=void 0,36!==(a=(i+"").charCodeAt(0))&&95!==a&&hn(e,"_data",i))}var a;Se(t,!0)}(e):Se(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=re();for(var o in t){var i=t[o],a="function"==typeof i?i:i.get;0,r||(n[o]=new dn(e,a||E,E,vn)),o in e||gn(e,o,i)}}(e,t.computed),t.watch&&t.watch!==ee&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var o=0;o-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!p(e)&&e.test(t)}function On(e,t){var n=e.cache,r=e.keys,o=e._vnode;for(var i in n){var a=n[i];if(a){var s=Sn(a.componentOptions);s&&!t(s)&&$n(n,i,r,o)}}}function $n(e,t,n,r){var o=e[t];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),e[t]=null,y(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=wn++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Me(xn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Zt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,o=n&&n.context;e.$slots=dt(t._renderChildren,o),e.$scopedSlots=r,e._c=function(t,n,r,o){return qt(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return qt(e,t,n,r,o,!0)};var i=n&&n.data;Te(e,"$attrs",i&&i.attrs||r,null,!0),Te(e,"$listeners",t._parentListeners||r,null,!0)}(t),Gt(t,"beforeCreate"),function(e){var t=pt(e.$options.inject,e);t&&(Ce(!1),Object.keys(t).forEach((function(n){Te(e,n,t[n])})),Ce(!0))}(t),mn(t),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(t),Gt(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(Cn),function(e){var t={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",n),e.prototype.$set=Oe,e.prototype.$delete=$e,e.prototype.$watch=function(e,t,n){if(u(t))return _n(this,e,t,n);(n=n||{}).user=!0;var r=new dn(this,e,t,n);if(n.immediate)try{t.call(this,r.value)}catch(e){Ne(e,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(Cn),function(e){var t=/^hook:/;e.prototype.$on=function(e,n){var r=this;if(Array.isArray(e))for(var o=0,i=e.length;o1?$(n):n;for(var r=$(arguments,1),o='event handler for "'+e+'"',i=0,a=n.length;iparseInt(this.max)&&$n(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return q}};Object.defineProperty(e,"config",t),e.util={warn:ce,extend:j,mergeOptions:Me,defineReactive:Te},e.set=Oe,e.delete=$e,e.nextTick=tt,e.observable=function(e){return Se(e),e},e.options=Object.create(null),F.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,j(e.options.components,An),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=$(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Me(this.options,e),this}}(e),kn(e),function(e){F.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Cn),Object.defineProperty(Cn.prototype,"$isServer",{get:re}),Object.defineProperty(Cn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Cn,"FunctionalRenderContext",{value:Pt}),Cn.version="2.6.12";var En=v("style,class"),Pn=v("input,textarea,option,select,progress"),Hn=v("contenteditable,draggable,spellcheck"),In=v("events,caret,typing,plaintext-only"),Ln=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Mn="http://www.w3.org/1999/xlink",Fn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Rn=function(e){return Fn(e)?e.slice(6,e.length):""},qn=function(e){return null==e||!1===e};function Dn(e){for(var t=e.data,n=e,r=e;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=Bn(r.data,t));for(;i(n=n.parent);)n&&n.data&&(t=Bn(t,n.data));return function(e,t){if(i(e)||i(t))return Nn(e,Jn(t));return""}(t.staticClass,t.class)}function Bn(e,t){return{staticClass:Nn(e.staticClass,t.staticClass),class:i(e.class)?[e.class,t.class]:t.class}}function Nn(e,t){return e?t?e+" "+t:e:t||""}function Jn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r-1?dr(e,t,n):Ln(t)?qn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Hn(t)?e.setAttribute(t,function(e,t){return qn(t)||"false"===t?"false":"contenteditable"===e&&In(t)?t:"true"}(t,n)):Fn(t)?qn(n)?e.removeAttributeNS(Mn,Rn(t)):e.setAttributeNS(Mn,t,n):dr(e,t,n)}function dr(e,t,n){if(qn(n))e.removeAttribute(t);else{if(Y&&!Q&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var fr={create:ur,update:ur};function hr(e,t){var n=t.elm,r=t.data,a=e.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=Dn(t),c=n._transitionClasses;i(c)&&(s=Nn(s,Jn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var mr,vr={create:hr,update:hr};function gr(e,t,n){var r=mr;return function o(){var i=t.apply(null,arguments);null!==i&&_r(e,o,n,r)}}var yr=We&&!(G&&Number(G[1])<=53);function br(e,t,n,r){if(yr){var o=sn,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=o||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}mr.addEventListener(e,t,te?{capture:n,passive:r}:n)}function _r(e,t,n,r){(r||mr).removeEventListener(e,t._wrapper||t,n)}function wr(e,t){if(!o(e.data.on)||!o(t.data.on)){var n=t.data.on||{},r=e.data.on||{};mr=t.elm,function(e){if(i(e.__r)){var t=Y?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}i(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),at(n,r,br,_r,gr,t.context),mr=void 0}}var xr,Cr={create:wr,update:wr};function kr(e,t){if(!o(e.data.domProps)||!o(t.data.domProps)){var n,r,a=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in i(c.__ob__)&&(c=t.data.domProps=j({},c)),s)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var l=o(r)?"":String(r);Sr(a,l)&&(a.value=l)}else if("innerHTML"===n&&Vn(a.tagName)&&o(a.innerHTML)){(xr=xr||document.createElement("div")).innerHTML=""+r+"";for(var u=xr.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;u.firstChild;)a.appendChild(u.firstChild)}else if(r!==s[n])try{a[n]=r}catch(e){}}}}function Sr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(i(r)){if(r.number)return m(n)!==m(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Tr={create:kr,update:kr},Or=w((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function $r(e){var t=jr(e.style);return e.staticStyle?j(e.staticStyle,t):t}function jr(e){return Array.isArray(e)?A(e):"string"==typeof e?Or(e):e}var Ar,Er=/^--/,Pr=/\s*!important$/,Hr=function(e,t,n){if(Er.test(t))e.style.setProperty(t,n);else if(Pr.test(n))e.style.setProperty(T(t),n.replace(Pr,""),"important");else{var r=Lr(t);if(Array.isArray(n))for(var o=0,i=n.length;o-1?t.split(Rr).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Dr(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Rr).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function Br(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&j(t,Nr(e.name||"v")),j(t,e),t}return"string"==typeof e?Nr(e):void 0}}var Nr=w((function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}})),Jr=z&&!Q,Ur="transition",zr="transitionend",Vr="animation",Wr="animationend";Jr&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Ur="WebkitTransition",zr="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Vr="WebkitAnimation",Wr="webkitAnimationEnd"));var Zr=z?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Yr(e){Zr((function(){Zr(e)}))}function Qr(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),qr(e,t))}function Kr(e,t){e._transitionClasses&&y(e._transitionClasses,t),Dr(e,t)}function Xr(e,t,n){var r=eo(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?zr:Wr,c=0,l=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++c>=a&&l()};setTimeout((function(){c0&&(n="transition",u=a,p=i.length):"animation"===t?l>0&&(n="animation",u=l,p=c.length):p=(n=(u=Math.max(a,l))>0?a>l?"transition":"animation":null)?"transition"===n?i.length:c.length:0,{type:n,timeout:u,propCount:p,hasTransform:"transition"===n&&Gr.test(r[Ur+"Property"])}}function to(e,t){for(;e.length1}function so(e,t){!0!==t.data.show&&ro(t)}var co=function(e){var t,n,r={},c=e.modules,l=e.nodeOps;for(t=0;th?b(e,o(n[g+1])?null:n[g+1].elm,n,f,g,r):f>g&&w(t,d,h)}(d,v,g,n,u):i(g)?(i(e.text)&&l.setTextContent(d,""),b(d,null,g,0,g.length-1,n)):i(v)?w(v,0,v.length-1):i(e.text)&&l.setTextContent(d,""):e.text!==t.text&&l.setTextContent(d,t.text),i(h)&&i(f=h.hook)&&i(f=f.postpatch)&&f(e,t)}}}function S(e,t,n){if(a(n)&&i(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(I(ho(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));o||(e.selectedIndex=-1)}}function fo(e,t){return t.every((function(t){return!I(t,e)}))}function ho(e){return"_value"in e?e._value:e.value}function mo(e){e.target.composing=!0}function vo(e){e.target.composing&&(e.target.composing=!1,go(e.target,"input"))}function go(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function yo(e){return!e.componentInstance||e.data&&e.data.transition?e:yo(e.componentInstance._vnode)}var bo={model:lo,show:{bind:function(e,t,n){var r=t.value,o=(n=yo(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&o?(n.data.show=!0,ro(n,(function(){e.style.display=i}))):e.style.display=r?i:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=yo(n)).data&&n.data.transition?(n.data.show=!0,r?ro(n,(function(){e.style.display=e.__vOriginalDisplay})):oo(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,o){o||(e.style.display=e.__vOriginalDisplay)}}},_o={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function wo(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?wo(Ut(t.children)):e}function xo(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var i in o)t[C(i)]=o[i];return t}function Co(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var ko=function(e){return e.tag||Jt(e)},So=function(e){return"show"===e.name},To={name:"transition",props:_o,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(ko)).length){0;var r=this.mode;0;var o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var i=wo(o);if(!i)return o;if(this._leaving)return Co(e,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=xo(this),l=this._vnode,u=wo(l);if(i.data.directives&&i.data.directives.some(So)&&(i.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,u)&&!Jt(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var p=u.data.transition=j({},c);if("out-in"===r)return this._leaving=!0,st(p,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Co(e,o);if("in-out"===r){if(Jt(i))return l;var d,f=function(){d()};st(c,"afterEnter",f),st(c,"enterCancelled",f),st(p,"delayLeave",(function(e){d=e}))}}return o}}},Oo=j({tag:String,moveClass:String},_o);function $o(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function jo(e){e.data.newPos=e.elm.getBoundingClientRect()}function Ao(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,o=t.top-n.top;if(r||o){e.data.moved=!0;var i=e.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete Oo.mode;var Eo={Transition:To,TransitionGroup:{props:Oo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var o=Qt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,o(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=xo(this),s=0;s-1?Zn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Zn[e]=/HTMLUnknownElement/.test(t.toString())},j(Cn.options.directives,bo),j(Cn.options.components,Eo),Cn.prototype.__patch__=z?co:E,Cn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ve),Gt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new dn(e,r,E,{before:function(){e._isMounted&&!e._isDestroyed&&Gt(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Gt(e,"mounted")),e}(this,e=e&&z?function(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}(e):void 0,t)},z&&setTimeout((function(){q.devtools&&oe&&oe.emit("init",Cn)}),0),t.a=Cn},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a,s){var c,l="function"==typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),r&&(l.functional=!0),i&&(l._scopeId="data-v-"+i),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,c):[c]}return{exports:e,options:l}}n.d(t,"a",(function(){return r}))},function(e,t,n){var r=n(28),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(84),o=n(87);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t){var n=/^\s+|\s+$/g,r=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,i=/^0o[0-7]+$/i,a=parseInt,s="object"==typeof global&&global&&global.Object===Object&&global,c="object"==typeof self&&self&&self.Object===Object&&self,l=s||c||Function("return this")(),u=Object.prototype.toString,p=Math.max,d=Math.min,f=function(){return l.Date.now()};function h(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function m(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==u.call(e)}(e))return NaN;if(h(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=h(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var s=o.test(e);return s||i.test(e)?a(e.slice(2),s?2:8):r.test(e)?NaN:+e}e.exports=function(e,t,n){var r,o,i,a,s,c,l=0,u=!1,v=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=r,i=o;return r=o=void 0,l=t,a=e.apply(i,n)}function b(e){return l=e,s=setTimeout(w,t),u?y(e):a}function _(e){var n=e-c;return void 0===c||n>=t||n<0||v&&e-l>=i}function w(){var e=f();if(_(e))return x(e);s=setTimeout(w,function(e){var n=t-(e-c);return v?d(n,i-(e-l)):n}(e))}function x(e){return s=void 0,g&&r?y(e):(r=o=void 0,a)}function C(){var e=f(),n=_(e);if(r=arguments,o=this,c=e,n){if(void 0===s)return b(c);if(v)return s=setTimeout(w,t),y(c)}return void 0===s&&(s=setTimeout(w,t)),a}return t=m(t)||0,h(n)&&(u=!!n.leading,i=(v="maxWait"in n)?p(m(n.maxWait)||0,t):i,g="trailing"in n?!!n.trailing:g),C.cancel=function(){void 0!==s&&clearTimeout(s),l=0,r=c=o=s=void 0},C.flush=function(){return void 0===s?a:x(f())},C}},function(e,t,n){var r=n(2).Symbol;e.exports=r},function(e,t,n){var r=n(7),o=n(69),i=n(70),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},function(e,t,n){ -/*! -* screenfull -* v5.2.0 - 2021-11-03 -* (c) Sindre Sorhus; MIT License -*/ -!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,o=n.length,i={};r
'};function o(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var c=n.render(!t),l=c.querySelector(r.barSelector),u=r.speed,p=r.easing;return c.offsetWidth,a((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(l,function(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}(e,u,p)),1===e?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){s(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),c=e?"-100":i(n.status||0),u=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&d(o),u!=document.body&&l(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,o,i=arguments;if(2==i.length)for(n in t)void 0!==(o=t[n])&&t.hasOwnProperty(n)&&r(e,n,o);else r(e,i[1],i[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function l(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function u(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},function(e,t,n){"use strict";t.a={render:()=>null}},function(e,t,n){var r=n(68),o=n(5),i=Object.prototype,a=i.hasOwnProperty,s=i.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},function(e,t,n){var r=n(4)(n(2),"Map");e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(88),o=n(95),i=n(97),a=n(98),s=n(99);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(3),o=n(24),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(8),o=n(5);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t){e.exports=function(e){return e}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++nu))return!1;var d=c.get(e),f=c.get(t);if(d&&f)return d==t&&f==e;var h=-1,m=!0,v=2&n?new r:void 0;for(c.set(e,t),c.set(t,e);++h-1&&e%1==0&&e1?1:s,n=.5*(1-Math.cos(Math.PI*a)),r=t.startX+(t.x-t.startX)*n,o=t.startY+(t.y-t.startY)*n,t.method.call(t.scrollable,r,o),r===t.x&&o===t.y||e.requestAnimationFrame(f.bind(e,t))}function h(n,r,a){var c,l,u,p,d=i();n===t.body?(c=e,l=e.scrollX||e.pageXOffset,u=e.scrollY||e.pageYOffset,p=o.scroll):(c=n,l=n.scrollLeft,u=n.scrollTop,p=s),f({scrollable:c,method:p,startTime:d,startX:l,startY:u,x:r,y:a})}}}}()},function(e,t,n){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(o=r))}),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=n(174)(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},function(e,t,n){var r=n(45);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){},function(e,t,n){e.exports=n(182)},function(e,t,n){var r=n(27),o=n(67);e.exports=function e(t,n,i,a,s){var c=-1,l=t.length;for(i||(i=o),s||(s=[]);++c0&&i(u)?n>1?e(u,n-1,i,a,s):r(s,u):a||(s[s.length]=u)}return s}},function(e,t,n){var r=n(7),o=n(17),i=n(3),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return i(e)||o(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(8),o=n(5);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t,n){var r=n(7),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[s]=n:delete e[s]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(72),o=n(128),i=n(25),a=n(3),s=n(138);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(73),o=n(127),i=n(44);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(29),o=n(33);e.exports=function(e,t,n,i){var a=n.length,s=a,c=!i;if(null==e)return!s;for(e=Object(e);a--;){var l=n[a];if(c&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++a-1}},function(e,t,n){var r=n(11);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(10);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(10),o=n(18),i=n(20);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(31),o=n(85),i=n(19),a=n(32),s=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,p=l.hasOwnProperty,d=RegExp("^"+u.call(p).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?d:s).test(a(e))}},function(e,t,n){var r,o=n(86),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!i&&i in e}},function(e,t,n){var r=n(2)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(89),o=n(10),i=n(18);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(e,t,n){var r=n(90),o=n(91),i=n(92),a=n(93),s=n(94);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(35),o=n(150),i=n(155),a=n(36),s=n(156),c=n(21);e.exports=function(e,t,n){var l=-1,u=o,p=e.length,d=!0,f=[],h=f;if(n)d=!1,u=i;else if(p>=200){var m=t?null:s(e);if(m)return c(m);d=!1,u=a,h=new r}else h=t?[]:f;e:for(;++l-1}},function(e,t,n){var r=n(152),o=n(153),i=n(154);e.exports=function(e,t,n){return t==t?i(e,t,n):r(e,o,n)}},function(e,t){e.exports=function(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i{if("%%"===n)return"%";s++;const i=t.formatters[o];if("function"==typeof i){const t=e[s];n=i.call(r,t),e.splice(s,1),s--}return n}),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return i.namespace=e,i.useColors=t.useColors(),i.color=t.selectColor(e),i.extend=r,i.destroy=t.destroy,Object.defineProperty(i,"enabled",{enumerable:!0,configurable:!1,get:()=>null===o?t.enabled(e):o,set:e=>{o=e}}),"function"==typeof t.init&&t.init(i),i}function r(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map(e=>"-"+e)].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),o=r.length;for(n=0;n{t[n]=e[n]}),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t=1.5*n;return Math.round(e/n)+" "+r+(o?"s":"")}e.exports=function(e,t){t=t||{};var s=typeof e;if("string"===s&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var a=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return a*i;case"hours":case"hour":case"hrs":case"hr":case"h":return a*o;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===s&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return a(e,t,i,"day");if(t>=o)return a(e,t,o,"hour");if(t>=r)return a(e,t,r,"minute");if(t>=n)return a(e,t,n,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=i)return Math.round(e/i)+"d";if(t>=o)return Math.round(e/o)+"h";if(t>=r)return Math.round(e/r)+"m";if(t>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n(57)},function(e,t,n){},function(e,t,n){"use strict";n(58)},function(e,t,n){"use strict";n(59)},function(e,t,n){"use strict";n.r(t);var r=n(0); -/*! - * vue-router v3.5.1 - * (c) 2021 Evan You - * @license MIT - */function o(e,t){for(var n in t)e[n]=t[n];return e}var i=/[!'()*]/g,a=function(e){return"%"+e.charCodeAt(0).toString(16)},s=/%2C/g,c=function(e){return encodeURIComponent(e).replace(i,a).replace(s,",")};function l(e){try{return decodeURIComponent(e)}catch(e){0}return e}var u=function(e){return null==e||"object"==typeof e?e:String(e)};function p(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),r=l(n.shift()),o=n.length>0?l(n.join("=")):null;void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]})),t):t}function d(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return c(t);if(Array.isArray(n)){var r=[];return n.forEach((function(e){void 0!==e&&(null===e?r.push(c(t)):r.push(c(t)+"="+c(e)))})),r.join("&")}return c(t)+"="+c(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var f=/\/?$/;function h(e,t,n,r){var o=r&&r.options.stringifyQuery,i=t.query||{};try{i=m(i)}catch(e){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:i,params:t.params||{},fullPath:y(t,o),matched:e?g(e):[]};return n&&(a.redirectedFrom=y(n,o)),Object.freeze(a)}function m(e){if(Array.isArray(e))return e.map(m);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=m(e[n]);return t}return e}var v=h(null,{path:"/"});function g(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function y(e,t){var n=e.path,r=e.query;void 0===r&&(r={});var o=e.hash;return void 0===o&&(o=""),(n||"/")+(t||d)(r)+o}function b(e,t,n){return t===v?e===t:!!t&&(e.path&&t.path?e.path.replace(f,"")===t.path.replace(f,"")&&(n||e.hash===t.hash&&_(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&_(e.query,t.query)&&_(e.params,t.params))))}function _(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),r=Object.keys(t).sort();return n.length===r.length&&n.every((function(n,o){var i=e[n];if(r[o]!==n)return!1;var a=t[n];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?_(i,a):String(i)===String(a)}))}function w(e){for(var t=0;t=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(i.path||""),d=t&&t.path||"/",f=l.path?k(l.path,d,n||i.append):d,h=function(e,t,n){void 0===t&&(t={});var r,o=n||p;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(u):u(a)}return r}(l.query,i.query,r&&r.options.parseQuery),m=i.hash||l.hash;return m&&"#"!==m.charAt(0)&&(m="#"+m),{_normalized:!0,path:f,query:h,hash:m}}var z,V=function(){},W={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),a=i.location,s=i.route,c=i.href,l={},u=n.options.linkActiveClass,p=n.options.linkExactActiveClass,d=null==u?"router-link-active":u,m=null==p?"router-link-exact-active":p,v=null==this.activeClass?d:this.activeClass,g=null==this.exactActiveClass?m:this.exactActiveClass,y=s.redirectedFrom?h(null,U(s.redirectedFrom),null,n):s;l[g]=b(r,y,this.exactPath),l[v]=this.exact||this.exactPath?l[g]:function(e,t){return 0===e.path.replace(f,"/").indexOf(t.path.replace(f,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,y);var _=l[g]?this.ariaCurrentValue:null,w=function(e){Z(e)&&(t.replace?n.replace(a,V):n.push(a,V))},x={click:Z};Array.isArray(this.event)?this.event.forEach((function(e){x[e]=w})):x[this.event]=w;var C={class:l},k=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:w,isActive:l[v],isExactActive:l[g]});if(k){if(1===k.length)return k[0];if(k.length>1||!k.length)return 0===k.length?e():e("span",{},k)}if("a"===this.tag)C.on=x,C.attrs={href:c,"aria-current":_};else{var S=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=J(u.path,s.params),c(u,s,a)}if(s.path){s.params={};for(var f=0;f=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}var _e={redirected:2,aborted:4,cancelled:8,duplicated:16};function we(e,t){return Ce(e,t,_e.redirected,'Redirected when going from "'+e.fullPath+'" to "'+function(e){if("string"==typeof e)return e;if("path"in e)return e.path;var t={};return ke.forEach((function(n){n in e&&(t[n]=e[n])})),JSON.stringify(t,null,2)}(t)+'" via a navigation guard.')}function xe(e,t){return Ce(e,t,_e.cancelled,'Navigation cancelled from "'+e.fullPath+'" to "'+t.fullPath+'" with a new navigation.')}function Ce(e,t,n,r){var o=new Error(r);return o._isRouter=!0,o.from=e,o.to=t,o.type=n,o}var ke=["params","query","hash"];function Se(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function Te(e,t){return Se(e)&&e._isRouter&&(null==t||e.type===t)}function Oe(e){return function(t,n,r){var o=!1,i=0,a=null;$e(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var c,l=Ee((function(t){var o;((o=t).__esModule||Ae&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:z.extend(t),n.components[s]=t,--i<=0&&r()})),u=Ee((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=Se(e)?e:new Error(t),r(a))}));try{c=e(l,u)}catch(e){u(e)}if(c)if("function"==typeof c.then)c.then(l,u);else{var p=c.component;p&&"function"==typeof p.then&&p.then(l,u)}}})),o||r()}}function $e(e,t){return je(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function je(e){return Array.prototype.concat.apply([],e)}var Ae="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ee(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Pe=function(e,t){this.router=e,this.base=function(e){if(!e)if(Y){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=v,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function He(e,t,n,r){var o=$e(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=z.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return je(r?o.reverse():o)}function Ie(e,t){if(t)return function(){return e.apply(t,arguments)}}Pe.prototype.listen=function(e){this.cb=e},Pe.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Pe.prototype.onError=function(e){this.errorCbs.push(e)},Pe.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(Te(e,_e.redirected)&&i===v||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},Pe.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!Te(e)&&Se(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},c=e.matched.length-1,l=o.matched.length-1;if(b(e,o)&&c===l&&e.matched[c]===o.matched[l])return this.ensureURL(),s(((a=Ce(i=o,e,_e.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=ve&&n;r&&this.listeners.push(ae());var o=function(){var n=e.current,o=Me(e.base);e.current===v&&o===e._startLocation||e.transitionTo(o,(function(e){r&&se(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ge(S(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ye(S(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Me(this.base)!==this.current.fullPath){var t=S(this.base+this.current.fullPath);e?ge(t):ye(t)}},t.prototype.getCurrentLocation=function(){return Me(this.base)},t}(Pe);function Me(e){var t=window.location.pathname;return e&&0===t.toLowerCase().indexOf(e.toLowerCase())&&(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Fe=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Me(e);if(!/^\/#/.test(t))return window.location.replace(S(e+"/#"+t)),!0}(this.base)||Re()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=ve&&t;n&&this.listeners.push(ae());var r=function(){var t=e.current;Re()&&e.transitionTo(qe(),(function(r){n&&se(e.router,r,t,!0),ve||Ne(r.fullPath)}))},o=ve?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Be(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Ne(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;qe()!==t&&(e?Be(t):Ne(t))},t.prototype.getCurrentLocation=function(){return qe()},t}(Pe);function Re(){var e=qe();return"/"===e.charAt(0)||(Ne("/"+e),!1)}function qe(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function De(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function Be(e){ve?ge(De(e)):window.location.hash=e}function Ne(e){ve?ye(De(e)):window.location.replace(De(e))}var Je=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){Te(e,_e.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Pe),Ue=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=X(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ve&&!1!==e.fallback,this.fallback&&(t="hash"),Y||(t="abstract"),this.mode=t,t){case"history":this.history=new Le(this,e.base);break;case"hash":this.history=new Fe(this,e.base,this.fallback);break;case"abstract":this.history=new Je(this,e.base);break;default:0}},ze={currentRoute:{configurable:!0}};function Ve(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ue.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ze.currentRoute.get=function(){return this.history&&this.history.current},Ue.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Le||n instanceof Fe){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;ve&&o&&"fullPath"in e&&se(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ue.prototype.beforeEach=function(e){return Ve(this.beforeHooks,e)},Ue.prototype.beforeResolve=function(e){return Ve(this.resolveHooks,e)},Ue.prototype.afterEach=function(e){return Ve(this.afterHooks,e)},Ue.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ue.prototype.onError=function(e){this.history.onError(e)},Ue.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ue.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ue.prototype.go=function(e){this.history.go(e)},Ue.prototype.back=function(){this.go(-1)},Ue.prototype.forward=function(){this.go(1)},Ue.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ue.prototype.resolve=function(e,t,n){var r=U(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?S(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ue.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ue.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==v&&this.history.transitionTo(this.history.getCurrentLocation())},Ue.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==v&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ue.prototype,ze),Ue.install=function e(t){if(!e.installed||z!==t){e.installed=!0,z=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",x),t.component("RouterLink",W);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ue.version="3.5.1",Ue.isNavigationFailure=Te,Ue.NavigationFailureType=_e,Ue.START_LOCATION=v,Y&&window.Vue&&window.Vue.use(Ue);var We=Ue;var Ze={NotFound:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(6)]).then(n.bind(null,485)),Blog:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(4)]).then(n.bind(null,484)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(37),n.e(5)]).then(n.bind(null,483)),Slide:()=>Promise.all([n.e(0),n.e(1),n.e(7)]).then(n.bind(null,486))},Ye={"v-3fa1b7ce":()=>n.e(8).then(n.bind(null,487)),"v-2173826d":()=>n.e(28).then(n.bind(null,488)),"v-3a4d7275":()=>n.e(12).then(n.bind(null,489)),"v-2938c2d6":()=>n.e(11).then(n.bind(null,490)),"v-0a41d356":()=>n.e(35).then(n.bind(null,491)),"v-65cbc55d":()=>n.e(20).then(n.bind(null,492)),"v-065c0076":()=>n.e(9).then(n.bind(null,493)),"v-6d3d3ba1":()=>n.e(26).then(n.bind(null,494)),"v-507d7d5f":()=>n.e(31).then(n.bind(null,495)),"v-39e74116":()=>n.e(22).then(n.bind(null,496)),"v-42f24c35":()=>n.e(32).then(n.bind(null,497)),"v-5e0aaaf5":()=>n.e(29).then(n.bind(null,498)),"v-430c31fa":()=>n.e(36).then(n.bind(null,499)),"v-a2add256":()=>n.e(14).then(n.bind(null,500)),"v-16f7bd48":()=>n.e(30).then(n.bind(null,501)),"v-5913b2cf":()=>n.e(25).then(n.bind(null,502)),"v-2c1891b5":()=>n.e(23).then(n.bind(null,503)),"v-18390f56":()=>n.e(27).then(n.bind(null,504)),"v-3c9d6c16":()=>n.e(33).then(n.bind(null,505)),"v-037ce435":()=>n.e(17).then(n.bind(null,506)),"v-2411e8cf":()=>n.e(24).then(n.bind(null,507)),"v-59936b95":()=>n.e(10).then(n.bind(null,508)),"v-5e6a771d":()=>n.e(34).then(n.bind(null,509)),"v-dfa5d326":()=>n.e(16).then(n.bind(null,510)),"v-64c9a555":()=>n.e(13).then(n.bind(null,511)),"v-6fe0c0a2":()=>n.e(21).then(n.bind(null,512)),"v-393a503f":()=>n.e(19).then(n.bind(null,513)),"v-7e1b6622":()=>n.e(18).then(n.bind(null,514)),"v-50604095":()=>n.e(15).then(n.bind(null,515))};function Qe(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Ke=/-(\w)/g,Xe=Qe(e=>e.replace(Ke,(e,t)=>t?t.toUpperCase():"")),Ge=/\B([A-Z])/g,et=Qe(e=>e.replace(Ge,"-$1").toLowerCase()),tt=Qe(e=>e.charAt(0).toUpperCase()+e.slice(1));function nt(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(tt(Xe(t))):e(tt(t))||e(et(t))}const rt=Object.assign({},Ze,Ye),ot=e=>rt[e],it=e=>Ye[e],at=e=>Ze[e],st=e=>r.a.component(e);function ct(e){return nt(it,e)}function lt(e){return nt(at,e)}function ut(e){return nt(ot,e)}function pt(e){return nt(st,e)}function dt(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!pt(e)&&ut(e)){const t=await ut(e)();r.a.component(e,t.default)}}))}function ft(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ht=n(60),mt=n.n(ht),vt={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${e[n]}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=yt(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=bt(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return mt()([{name:"description",content:this.$description}],e,this.siteMeta,_t)},updateCanonicalLink(){gt(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",yt(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){bt(null,this.currentMetaTags),gt()}};function gt(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function yt(e=""){return e?``:""}function bt(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function _t(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var wt=n(15),xt=n.n(wt),Ct={mounted(){xt.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||r.a.component(e.name)||xt.a.start(),n()}),this.$router.afterEach(()=>{xt.a.done(),this.isSidebarOpen=!1})}},kt=n(6),St=n.n(kt);let Tt;var Ot=r.a.extend({mounted(){Tt=St()(()=>{this.setActiveHash()},300),window.addEventListener("scroll",Tt)},beforeDestroy(){window.removeEventListener("scroll",Tt)},methods:{setActiveHash(){const e=Array.from(document.querySelectorAll(".sidebar-link")),t=Array.from(document.querySelectorAll(".header-anchor")).filter(t=>0===e.length||e.some(e=>e.hash===t.hash)),n=document.querySelector(".theme-default-content").offsetTop,r=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),o=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),i=window.innerHeight+r,a=decodeURIComponent(this.$route.hash),s=(e,n)=>{if(i===o)for(let e=n+1;e{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})};if(r-n<0&&a)s("#",-1);else for(let e=0;e=o.parentElement.offsetTop+0&&(!i||r-n${e}`,this.containerElement.appendChild(n),t>0&&setTimeout(()=>{this.close(n)},t)}close(e){e.className=e.className.replace("move-in",""),e.className+="move-out",e.addEventListener("animationend",()=>{e.remove()})}}n(161),n(64);let jt;const At={"/zh/":{copy:"复制成功 🎉",hint:"复制代码"},"/en/":{copy:"Copy successfully 🎉",hint:"Copy the code"},"/de/":{copy:"Kopieren erfolgreich 🎉",hint:"Kopiere den Code."},"/vi/":{copy:"Sao chép thành công 🎉",hint:"Sao chép code"},"/uk/":{copy:"Скопіюйте успішно 🎉",hint:"Скопіюйте код"},"/ru/":{copy:"Скоопировать успешно 🎉",hint:"Скопируйте код"},"/":{copy:"Copy successfully 🎉",hint:"Copy the code"}},Et={},Pt=()=>!!navigator&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/iu.test(navigator.userAgent);var Ht=r.a.extend({mounted(){jt=new $t,Pt()&&!Et.showInMobile||this.genCopyButton()},updated(){Pt()&&!Et.showInMobile||this.genCopyButton()},methods:{genCopyButton(){const e=Et.selector||'.theme-default-content div[class*="language-"] pre';setTimeout(()=>{"string"==typeof e?document.querySelectorAll(e).forEach(this.insertCopyButton.bind(this)):Array.isArray(e)&&e.forEach(e=>{document.querySelectorAll(e).forEach(this.insertCopyButton.bind(this))})},1e3)},insertCopyButton(e){if(!e.hasAttribute("copy-code-registerd")){const t=document.createElement("button");t.className="copy-code-button",t.innerHTML='',t.addEventListener("click",()=>{this.copyToClipboard(e.innerText)}),t.setAttribute("aria-label",At[this.$localePath||"/"].hint),t.setAttribute("data-balloon-pos","left"),e.parentElement&&e.parentElement.insertBefore(t,e),e.setAttribute("copy-code-registerd","")}},copyToClipboard(e){const t=document.getSelection(),n=!!(t&&t.rangeCount>0)&&t.getRangeAt(0),r=document.createElement("textarea");r.value=e,r.setAttribute("readonly",""),r.style.position="absolute",r.style.top="-9999px",document.body.appendChild(r),r.select(),document.execCommand("copy"),0!==Et.duration&&jt.pop(At[this.$localePath||"/"].copy,Et.duration),document.body.removeChild(r),n&&t&&(t.removeAllRanges(),t.addRange(n))}}}),It={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:St()((function(){this.setActiveHash()}),300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let e=0;e=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Lt=n(61),Mt=n.n(Lt),Ft=[vt,Ct,Ot,Ht,It,{mounted(){Mt.a.polyfill()}}],Rt={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return ft("layout",e),r.a.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},qt=n(1),Dt=Object(qt.a)(Rt,(function(){var e=this.$createElement;return(this._self._c||e)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Dt,"mixins",Ft);const Bt=[{name:"v-3fa1b7ce",path:"/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-3fa1b7ce").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-2173826d",path:"/use/testcase/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-2173826d").then(n)}},{path:"/use/testcase/index.html",redirect:"/use/testcase/"},{path:"/use/testcase.html",redirect:"/use/testcase/"},{name:"v-3a4d7275",path:"/monomer/redis/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-3a4d7275").then(n)}},{path:"/monomer/redis/index.html",redirect:"/monomer/redis/"},{path:"/monomer/redis.html",redirect:"/monomer/redis/"},{name:"v-2938c2d6",path:"/monomer/mysql-checker/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-2938c2d6").then(n)}},{path:"/monomer/mysql-checker/index.html",redirect:"/monomer/mysql-checker/"},{path:"/monomer/mysql-checker.html",redirect:"/monomer/mysql-checker/"},{name:"v-0a41d356",path:"/use/notice-announcement/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-0a41d356").then(n)}},{path:"/use/notice-announcement/index.html",redirect:"/use/notice-announcement/"},{path:"/use/notice-announcement.html",redirect:"/use/notice-announcement/"},{name:"v-65cbc55d",path:"/deploy/how-to-backup/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-65cbc55d").then(n)}},{path:"/deploy/how-to-backup/index.html",redirect:"/deploy/how-to-backup/"},{path:"/deploy/how-to-backup.html",redirect:"/deploy/how-to-backup/"},{name:"v-065c0076",path:"/introducition/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-065c0076").then(n)}},{path:"/introducition/index.html",redirect:"/introducition/"},{name:"v-6d3d3ba1",path:"/develop/db/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-6d3d3ba1").then(n)}},{path:"/develop/db/index.html",redirect:"/develop/db/"},{path:"/develop/db.html",redirect:"/develop/db/"},{name:"v-507d7d5f",path:"/use/admin-user/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-507d7d5f").then(n)}},{path:"/use/admin-user/index.html",redirect:"/use/admin-user/"},{path:"/use/admin-user.html",redirect:"/use/admin-user/"},{name:"v-39e74116",path:"/develop/sandbox/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-39e74116").then(n)}},{path:"/develop/sandbox/index.html",redirect:"/develop/sandbox/"},{path:"/develop/sandbox.html",redirect:"/develop/sandbox/"},{name:"v-42f24c35",path:"/introducition/about/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-42f24c35").then(n)}},{path:"/introducition/about/index.html",redirect:"/introducition/about/"},{path:"/introducition/about.html",redirect:"/introducition/about/"},{name:"v-5e0aaaf5",path:"/use/spj/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-5e0aaaf5").then(n)}},{path:"/use/spj/index.html",redirect:"/use/spj/"},{path:"/use/spj.html",redirect:"/use/spj/"},{name:"v-430c31fa",path:"/use/import-problem/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-430c31fa").then(n)}},{path:"/use/import-problem/index.html",redirect:"/use/import-problem/"},{path:"/use/import-problem.html",redirect:"/use/import-problem/"},{name:"v-a2add256",path:"/monomer/backend/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-a2add256").then(n)}},{path:"/monomer/backend/index.html",redirect:"/monomer/backend/"},{path:"/monomer/backend.html",redirect:"/monomer/backend/"},{name:"v-16f7bd48",path:"/deploy/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-16f7bd48").then(n)}},{path:"/deploy/index.html",redirect:"/deploy/"},{name:"v-5913b2cf",path:"/deploy/docker/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-5913b2cf").then(n)}},{path:"/deploy/docker/index.html",redirect:"/deploy/docker/"},{path:"/deploy/docker.html",redirect:"/deploy/docker/"},{name:"v-2c1891b5",path:"/use/import-user/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-2c1891b5").then(n)}},{path:"/use/import-user/index.html",redirect:"/use/import-user/"},{path:"/use/import-user.html",redirect:"/use/import-user/"},{name:"v-18390f56",path:"/use/contest/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-18390f56").then(n)}},{path:"/use/contest/index.html",redirect:"/use/contest/"},{path:"/use/contest.html",redirect:"/use/contest/"},{name:"v-3c9d6c16",path:"/use/update-fe/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-3c9d6c16").then(n)}},{path:"/use/update-fe/index.html",redirect:"/use/update-fe/"},{path:"/use/update-fe.html",redirect:"/use/update-fe/"},{name:"v-037ce435",path:"/monomer/rsync/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-037ce435").then(n)}},{path:"/monomer/rsync/index.html",redirect:"/monomer/rsync/"},{path:"/monomer/rsync.html",redirect:"/monomer/rsync/"},{name:"v-2411e8cf",path:"/deploy/open-https/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-2411e8cf").then(n)}},{path:"/deploy/open-https/index.html",redirect:"/deploy/open-https/"},{path:"/deploy/open-https.html",redirect:"/deploy/open-https/"},{name:"v-59936b95",path:"/monomer/mysql/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-59936b95").then(n)}},{path:"/monomer/mysql/index.html",redirect:"/monomer/mysql/"},{path:"/monomer/mysql.html",redirect:"/monomer/mysql/"},{name:"v-5e6a771d",path:"/use/discussion-admin/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-5e6a771d").then(n)}},{path:"/use/discussion-admin/index.html",redirect:"/use/discussion-admin/"},{path:"/use/discussion-admin.html",redirect:"/use/discussion-admin/"},{name:"v-dfa5d326",path:"/monomer/frontend/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-dfa5d326").then(n)}},{path:"/monomer/frontend/index.html",redirect:"/monomer/frontend/"},{path:"/monomer/frontend.html",redirect:"/monomer/frontend/"},{name:"v-64c9a555",path:"/monomer/nacos/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-64c9a555").then(n)}},{path:"/monomer/nacos/index.html",redirect:"/monomer/nacos/"},{path:"/monomer/nacos.html",redirect:"/monomer/nacos/"},{name:"v-6fe0c0a2",path:"/deploy/update/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-6fe0c0a2").then(n)}},{path:"/deploy/update/index.html",redirect:"/deploy/update/"},{path:"/deploy/update.html",redirect:"/deploy/update/"},{name:"v-393a503f",path:"/deploy/multi-judgeserver/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-393a503f").then(n)}},{path:"/deploy/multi-judgeserver/index.html",redirect:"/deploy/multi-judgeserver/"},{path:"/deploy/multi-judgeserver.html",redirect:"/deploy/multi-judgeserver/"},{name:"v-7e1b6622",path:"/use/close-free-cdn/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-7e1b6622").then(n)}},{path:"/use/close-free-cdn/index.html",redirect:"/use/close-free-cdn/"},{path:"/use/close-free-cdn.html",redirect:"/use/close-free-cdn/"},{name:"v-50604095",path:"/monomer/judgeserver/",component:Dt,beforeEnter:(e,t,n)=>{dt("Layout","v-50604095").then(n)}},{path:"/monomer/judgeserver/index.html",redirect:"/monomer/judgeserver/"},{path:"/monomer/judgeserver.html",redirect:"/monomer/judgeserver/"},{name:"v-6453f364",path:"/article/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-6453f364").then(n)}},{path:"/article/index.html",redirect:"/article/"},{name:"v-4340f7e8",path:"/star/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-4340f7e8").then(n)}},{path:"/star/index.html",redirect:"/star/"},{name:"v-7d484ebf",path:"/encrypt/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-7d484ebf").then(n)}},{path:"/encrypt/index.html",redirect:"/encrypt/"},{name:"v-2470be33",path:"/slide/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-2470be33").then(n)}},{path:"/slide/index.html",redirect:"/slide/"},{name:"v-6319eb4e",path:"/timeline/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-6319eb4e").then(n)}},{path:"/timeline/index.html",redirect:"/timeline/"},{name:"v-b1564aac",path:"/tag/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-b1564aac").then(n)},meta:{pid:"tag",id:"tag"}},{path:"/tag/index.html",redirect:"/tag/"},{name:"v-28e6393c",path:"/category/",component:Dt,beforeEnter:(e,t,n)=>{dt("Blog","v-28e6393c").then(n)},meta:{pid:"category",id:"category"}},{path:"/category/index.html",redirect:"/category/"},{path:"*",component:Dt}],Nt={title:"HOJ",description:"",base:"/docs/",headTags:[["link",{rel:"icon",href:"/docs/logo.png"}],["meta",{name:"theme-color",content:"#ffeded"}],["link",{rel:"alternate",type:"application/atom+xml",href:"https://hcode.top/docs/atom.xml",title:"HOJ Atom Feed"}],["link",{rel:"alternate",type:"application/json",href:"https://hcode.top/docs/feed.json",title:"HOJ JSON Feed"}],["link",{rel:"alternate",type:"application/rss+xml",href:"https://hcode.top/docs/rss.xml",title:"HOJ RSS Feed"}],["link",{rel:"manifest",href:"/docs/manifest.webmanifest",crossorigin:"use-credentials"}],["meta",{name:"viewport",content:"width=device-width, initial-scale=1.0, viewport-fit=cover"}]],pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/logo.png",heroText:"HOJ",tagline:"基于分布式、前后端分离的高性能在线评测系统",action:[{text:"文档介绍 🔔",link:"/introducition/",type:"primary"},{text:"快速部署",link:"/deploy/docker/"}],features:[{title:"分布式",details:"支持多台判题服务弹性增减"},{title:"高效化",details:"采用前后端分离,开发迅速,使用高性能可复用判题沙盒"},{title:"定制化",details:"网站高度集中配置,支持定制化修改"},{title:"安全化",details:"判题使用 cgroup 隔离用户程序,网站权限控制完善"},{title:"多样化",details:"独有自身判题服务,同时支持其它知名OJ题目的提交判题"}],footer:"MIT Licensed | Copyright © 2021.12.23 @Author Himit_ZH QQ Group:598587305",summary:"Hcode Online Judge (HOJ) : 基于前后端分离,分布式架构的在线测评平台(hoj),前端使用vue,后端主要使用springboot,redis,mysql,nacos等技术,支持HDU、POJ、Codeforces(包括GYM)的vjudge判题,同时适配手机端、电脑端浏览,拥有讨论区与站内消息系统,还有完善的比赛功能(打星队伍、关注",meta:[{property:"og:url",content:"/docs/"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"Home"},{property:"og:description",content:"Hcode Online Judge (HOJ) : 基于前后端分离,分布式架构的在线测评平台(hoj),前端使用vue,后端主要使用springboot,redis,mysql,nacos等技术,支持HDU、POJ、Codeforces(包括GYM)的vjudge判题,同时适配手机端、电脑端浏览,拥有讨论区与站内消息系统,还有完善的比赛功能(打星队伍、关注"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/",relativePath:"README.md",key:"v-3fa1b7ce",path:"/",headers:[{level:2,title:"联系我们",slug:"联系我们"}],readingTime:{minutes:1.16,words:348},updateTime:"December 14, 2021 13:02",updateTimeStamp:1639458152e3,createTime:"March 2, 2021 22:19",createTimeStamp:1614694777e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:15}]},{title:"测试用例",frontmatter:{summary:"测试用例 进入后台添加题目,上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式 一、手动输入 每次点击Add Sampple就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的testcase文件夹生成对应的文件。 二、",meta:[{property:"og:url",content:"/docs/use/testcase.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"测试用例"},{property:"og:description",content:"测试用例 进入后台添加题目,上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式 一、手动输入 每次点击Add Sampple就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的testcase文件夹生成对应的文件。 二、"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/testcase.html",relativePath:"use/testcase.md",key:"v-2173826d",path:"/use/testcase/",headers:[{level:2,title:"一、手动输入",slug:"一、手动输入"},{level:2,title:"二、文件上传",slug:"二、文件上传"}],readingTime:{minutes:1.37,words:411},updateTime:"December 9, 2021 16:58",updateTimeStamp:1639040303e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:2}]},{title:"单体部署③——Redis部署",frontmatter:{summary:"单体部署③——Redis部署 docker部署 常规部署 请自行百度。。",meta:[{property:"og:url",content:"/docs/monomer/redis.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署③——Redis部署"},{property:"og:description",content:"单体部署③——Redis部署 docker部署 常规部署 请自行百度。。"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/redis.html",relativePath:"monomer/redis.md",key:"v-3a4d7275",path:"/monomer/redis/",headers:[{level:2,title:"docker部署",slug:"docker部署"},{level:2,title:"常规部署",slug:"常规部署"}],readingTime:{minutes:.13,words:39},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"单体部署②——MySQL更新工具",frontmatter:{summary:"单体部署②——MySQL更新工具\r本镜像主要是为了跟随HOJ主仓库更新,使用固定镜像来检查是否有更新,以达到MySQL数据库的平滑升级 一、用已有的HOJ镜像部署 可以直接在已有的docker-compose.yml添加以下模块即可,本容器检查完是否有更新就会正常退出 二、自己打包镜像部署 首先 先下载hoj-deploy 然后进入对应的镜像打包文件夹 当前",meta:[{property:"og:url",content:"/docs/monomer/mysql-checker.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署②——MySQL更新工具"},{property:"og:description",content:"单体部署②——MySQL更新工具\r本镜像主要是为了跟随HOJ主仓库更新,使用固定镜像来检查是否有更新,以达到MySQL数据库的平滑升级 一、用已有的HOJ镜像部署 可以直接在已有的docker-compose.yml添加以下模块即可,本容器检查完是否有更新就会正常退出 二、自己打包镜像部署 首先 先下载hoj-deploy 然后进入对应的镜像打包文件夹 当前"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/mysql-checker.html",relativePath:"monomer/mysql-checker.md",key:"v-2938c2d6",path:"/monomer/mysql-checker/",headers:[{level:2,title:"一、用已有的HOJ镜像部署",slug:"一、用已有的hoj镜像部署"},{level:2,title:"二、自己打包镜像部署",slug:"二、自己打包镜像部署"}],readingTime:{minutes:1.36,words:407},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"通知和公告发布",frontmatter:{summary:"通知和公告发布\r1. 通知和公告都仅有超级管理员可操作 2. 通知是系统消息通知,每个小时推送一次到用户的站内消息系统",meta:[{property:"og:url",content:"/docs/use/notice-announcement.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"通知和公告发布"},{property:"og:description",content:"通知和公告发布\r1. 通知和公告都仅有超级管理员可操作 2. 通知是系统消息通知,每个小时推送一次到用户的站内消息系统"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/notice-announcement.html",relativePath:"use/notice-announcement.md",key:"v-0a41d356",path:"/use/notice-announcement/",readingTime:{minutes:.37,words:111},updateTime:"October 9, 2021 21:46",updateTimeStamp:1633787201e3,createTime:"October 9, 2021 21:46",createTimeStamp:1633787201e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"如何备份",frontmatter:{summary:"如何备份 1. 单体部署 请到~/hoj-deploy/standAlone的目录下,即是与docker-compose.yml的文件同个目录下,该目录下有个叫hoj的文件夹,里面的文件夹介绍如下: 那么,如果需要备份,只需将该hoj文件夹复制一份即可,在新的机器上重新部署新的hoj的时候,将该文件夹放置与docker-compose.yml一个目录下,使用",meta:[{property:"og:url",content:"/docs/deploy/how-to-backup.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"如何备份"},{property:"og:description",content:"如何备份 1. 单体部署 请到~/hoj-deploy/standAlone的目录下,即是与docker-compose.yml的文件同个目录下,该目录下有个叫hoj的文件夹,里面的文件夹介绍如下: 那么,如果需要备份,只需将该hoj文件夹复制一份即可,在新的机器上重新部署新的hoj的时候,将该文件夹放置与docker-compose.yml一个目录下,使用"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/deploy/how-to-backup.html",relativePath:"deploy/how-to-backup.md",key:"v-65cbc55d",path:"/deploy/how-to-backup/",headers:[{level:3,title:"1. 单体部署",slug:"_1-单体部署"},{level:3,title:"2. 分布式部署",slug:"_2-分布式部署"}],readingTime:{minutes:1.9,words:569},updateTime:"December 12, 2021 12:02",updateTimeStamp:1639281737e3,createTime:"December 12, 2021 12:02",createTimeStamp:1639281737e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"前言",frontmatter:{summary:"前言 一、什么是HOJ? HOJ,全称 Hcode Online Judge,是基于(springcloud+vue)前后端分离,分布式架构的在线测评系统。 二、为什么要开发HOJ? 因为这是Himit_ZH的毕业设计,同时也是个人志趣所在,目前HOJ从开始开发到现在快有一年了,凭着兴趣与职责一直在不断维护与更新新功能。 三、HOJ的特点\r适应:支持手机端,",meta:[{property:"og:url",content:"/docs/introducition/"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"前言"},{property:"og:description",content:"前言 一、什么是HOJ? HOJ,全称 Hcode Online Judge,是基于(springcloud+vue)前后端分离,分布式架构的在线测评系统。 二、为什么要开发HOJ? 因为这是Himit_ZH的毕业设计,同时也是个人志趣所在,目前HOJ从开始开发到现在快有一年了,凭着兴趣与职责一直在不断维护与更新新功能。 三、HOJ的特点\r适应:支持手机端,"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/introducition/",relativePath:"introducition/README.md",key:"v-065c0076",path:"/introducition/",headers:[{level:2,title:"一、什么是HOJ?",slug:"一、什么是hoj"},{level:2,title:"二、为什么要开发HOJ?",slug:"二、为什么要开发hoj"},{level:2,title:"三、HOJ的特点",slug:"三、hoj的特点"},{level:2,title:"四、使用HOJ的学校",slug:"四、使用hoj的学校"},{level:2,title:"五、部分截图",slug:"五、部分截图"}],readingTime:{minutes:3.63,words:1090},updateTime:"December 12, 2021 19:51",updateTimeStamp:1639309915e3,createTime:"March 2, 2021 22:19",createTimeStamp:1614694777e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:9}]},{title:"数据库说明",frontmatter:{summary:"数据库说明 用户资料模块 user_info表 列名 实体属性类型 键 备注 | ------------ ------------ ---- -------------------- | uuid String 主键 uuid用户id | username String 登录账号 | password String 登录密码 | nickname Stri",meta:[{property:"og:url",content:"/docs/develop/db.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"数据库说明"},{property:"og:description",content:"数据库说明 用户资料模块 user_info表 列名 实体属性类型 键 备注 | ------------ ------------ ---- -------------------- | uuid String 主键 uuid用户id | username String 登录账号 | password String 登录密码 | nickname Stri"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/develop/db.html",relativePath:"develop/db.md",key:"v-6d3d3ba1",path:"/develop/db/",headers:[{level:2,title:"用户资料模块",slug:"用户资料模块"},{level:2,title:"题目详情模块",slug:"题目详情模块"},{level:2,title:"提交评测模块",slug:"提交评测模块"},{level:2,title:"比赛模块",slug:"比赛模块"},{level:2,title:"讨论模块",slug:"讨论模块"},{level:2,title:"站内消息模块",slug:"站内消息模块"},{level:2,title:"文件模块",slug:"文件模块"},{level:2,title:"判题机模块",slug:"判题机模块"}],readingTime:{minutes:14.75,words:4424},updateTime:"November 24, 2021 20:03",updateTimeStamp:1637755394e3,createTime:"May 13, 2021 18:18",createTimeStamp:1620901088e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:8}]},{title:"用户管理",frontmatter:{summary:'用户管理\r" 注意:用户管理只有超级管理员账号可以操作!" 管理员角色说明 权限 超级管理员 题目管理员 普通管理员 | ------------------------------------------ :--------: :--------: :--------: | 系统公告管理 ✔ ❌ ❌ | 系统通知推送管理 ✔ ❌ ❌ | 系统配置 ✔ ❌ ',meta:[{property:"og:url",content:"/docs/use/admin-user.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"用户管理"},{property:"og:description",content:'用户管理\r" 注意:用户管理只有超级管理员账号可以操作!" 管理员角色说明 权限 超级管理员 题目管理员 普通管理员 | ------------------------------------------ :--------: :--------: :--------: | 系统公告管理 ✔ ❌ ❌ | 系统通知推送管理 ✔ ❌ ❌ | 系统配置 ✔ ❌ '},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/admin-user.html",relativePath:"use/admin-user.md",key:"v-507d7d5f",path:"/use/admin-user/",readingTime:{minutes:1.23,words:370},updateTime:"November 14, 2021 13:56",updateTimeStamp:1636869364e3,createTime:"June 14, 2021 15:18",createTimeStamp:1623655099e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:2}]},{title:"安全沙盒的调用",frontmatter:{summary:'安全沙盒的调用\r" Judger-SandBox使用的是开源项目go-judgeLinux版本的可执行文件,更多调用方式请自行浏览go-judge" HOJ用的是java来调用此沙盒,请看JudgeServer-judge下的SandboxRun.java 启动Judger-SandBox,默认监听5050端口 验证是否启动 访问:http://localh',meta:[{property:"og:url",content:"/docs/develop/sandbox.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"安全沙盒的调用"},{property:"og:description",content:'安全沙盒的调用\r" Judger-SandBox使用的是开源项目go-judgeLinux版本的可执行文件,更多调用方式请自行浏览go-judge" HOJ用的是java来调用此沙盒,请看JudgeServer-judge下的SandboxRun.java 启动Judger-SandBox,默认监听5050端口 验证是否启动 访问:http://localh'},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/develop/sandbox.html",relativePath:"develop/sandbox.md",key:"v-39e74116",path:"/develop/sandbox/",readingTime:{minutes:1.92,words:576},updateTime:"May 23, 2021 22:43",updateTimeStamp:1621780986e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"简介",frontmatter:{summary:'简介 技术选型\r" 基于Springcloud 和Vue.js的前后端分离的分布式在线评测系统"\r前端:; \r 技术以Vue为主,element-ui为主要框架; \r 支持手机端,响应式布局; \r 以CodeMirror作为在线代码编辑器; \r 以Mavon-Editor作为富文本编辑器; \r 支持用户头像上传,可选择性获取用户Codeforces分数; \r',meta:[{property:"og:url",content:"/docs/introducition/about.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"简介"},{property:"og:description",content:'简介 技术选型\r" 基于Springcloud 和Vue.js的前后端分离的分布式在线评测系统"\r前端:; \r 技术以Vue为主,element-ui为主要框架; \r 支持手机端,响应式布局; \r 以CodeMirror作为在线代码编辑器; \r 以Mavon-Editor作为富文本编辑器; \r 支持用户头像上传,可选择性获取用户Codeforces分数; \r'},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/introducition/about.html",relativePath:"introducition/about.md",key:"v-42f24c35",path:"/introducition/about/",headers:[{level:2,title:"技术选型",slug:"技术选型"},{level:2,title:"判题逻辑",slug:"判题逻辑"}],readingTime:{minutes:3.91,words:1174},updateTime:"October 9, 2021 21:46",updateTimeStamp:1633787201e3,createTime:"March 2, 2021 22:19",createTimeStamp:1614694777e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:3}]},{title:"特殊判题",frontmatter:{summary:"特殊判题 什么是特殊判题? 特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。 使用场景 一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:\r题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。; \r题目最",meta:[{property:"og:url",content:"/docs/use/spj.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"特殊判题"},{property:"og:description",content:"特殊判题 什么是特殊判题? 特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。 使用场景 一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:\r题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。; \r题目最"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/spj.html",relativePath:"use/spj.md",key:"v-5e0aaaf5",path:"/use/spj/",headers:[{level:2,title:"什么是特殊判题?",slug:"什么是特殊判题"},{level:2,title:"使用场景",slug:"使用场景"},{level:2,title:"支持",slug:"支持"},{level:2,title:"例子:",slug:"例子"}],readingTime:{minutes:1.82,words:546},updateTime:"August 14, 2021 23:01",updateTimeStamp:1628953315e3,createTime:"May 13, 2021 18:18",createTimeStamp:1620901088e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:7}]},{title:"题目管理",frontmatter:{summary:"题目管理 一、HOJ题目 1. 导出题目 点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下: 2. 导入题目 选择需要导入的题目数据zip压缩包,注意不要多一层文件夹进行压缩,请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致,具体文件格式如下:",meta:[{property:"og:url",content:"/docs/use/import-problem.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"题目管理"},{property:"og:description",content:"题目管理 一、HOJ题目 1. 导出题目 点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下: 2. 导入题目 选择需要导入的题目数据zip压缩包,注意不要多一层文件夹进行压缩,请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致,具体文件格式如下:"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/import-problem.html",relativePath:"use/import-problem.md",key:"v-430c31fa",path:"/use/import-problem/",headers:[{level:2,title:"一、HOJ题目",slug:"一、hoj题目"},{level:2,title:"二、导入QDUOJ或FPS格式的题目",slug:"二、导入qduoj或fps格式的题目"},{level:2,title:"三、导入其它OJ题目",slug:"三、导入其它oj题目"}],readingTime:{minutes:2.91,words:874},updateTime:"December 12, 2021 19:51",updateTimeStamp:1639309915e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:6}]},{title:"单体部署⑤——后端部署",frontmatter:{summary:"单体部署⑤——后端部署 前言 下载本项目,进入到当前文件夹执行打包命令 当前文件夹为打包hoj-backend镜像的相关文件,将这些文件复制到同一个文件夹内,然后打包DataBackup(SpringBoot项目)成jar包也放到当前文件夹,之后执行以下命令进行打包成镜像 项目依赖于hoj-redis,hoj-nacos,hoj-mysql等镜像成功启动,以",meta:[{property:"og:url",content:"/docs/monomer/backend.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署⑤——后端部署"},{property:"og:description",content:"单体部署⑤——后端部署 前言 下载本项目,进入到当前文件夹执行打包命令 当前文件夹为打包hoj-backend镜像的相关文件,将这些文件复制到同一个文件夹内,然后打包DataBackup(SpringBoot项目)成jar包也放到当前文件夹,之后执行以下命令进行打包成镜像 项目依赖于hoj-redis,hoj-nacos,hoj-mysql等镜像成功启动,以"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/backend.html",relativePath:"monomer/backend.md",key:"v-a2add256",path:"/monomer/backend/",headers:[{level:2,title:"前言",slug:"前言"},{level:2,title:"文件介绍",slug:"文件介绍"},{level:3,title:"1. check_nacos.sh",slug:"_1-check-nacos-sh"},{level:3,title:"2. run.sh",slug:"_2-run-sh"},{level:3,title:"3. Dockerfile",slug:"_3-dockerfile"}],readingTime:{minutes:2.86,words:858},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"环境配置",frontmatter:{summary:"环境配置 环境说明\r后端:需要在Linux系统下部署运行,建议使用ubuntu18.04,其它版本的Linux系统也可,同时需要Docker辅助部署; \r前端:Linux系统下,需要nginx进行反向代理; \r判题服务:由于判题沙盒有多操作系统版本,Linux系统或Windows都可,但是在本HOJ镜像中只能使用Ubuntu16.04以上或者CentOS8以",meta:[{property:"og:url",content:"/docs/deploy/"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"环境配置"},{property:"og:description",content:"环境配置 环境说明\r后端:需要在Linux系统下部署运行,建议使用ubuntu18.04,其它版本的Linux系统也可,同时需要Docker辅助部署; \r前端:Linux系统下,需要nginx进行反向代理; \r判题服务:由于判题沙盒有多操作系统版本,Linux系统或Windows都可,但是在本HOJ镜像中只能使用Ubuntu16.04以上或者CentOS8以"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/deploy/",relativePath:"deploy/README.md",key:"v-16f7bd48",path:"/deploy/",headers:[{level:2,title:"环境说明",slug:"环境说明"},{level:2,title:"Linux环境搭建",slug:"linux环境搭建"},{level:3,title:"安装docker",slug:"安装docker"},{level:3,title:"安装docker-compose",slug:"安装docker-compose"},{level:2,title:"Windows 环境",slug:"windows-环境"}],readingTime:{minutes:1.66,words:498},updateTime:"November 14, 2021 13:56",updateTimeStamp:1636869364e3,createTime:"March 2, 2021 22:19",createTimeStamp:1614694777e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:8}]},{title:"快速部署",frontmatter:{summary:"快速部署 前提:已经在上一步准备好docker与docker-compose\r注意:如果正式部署运用HOJ,请修改默认配置的密码,例如Redis、MySQL、Nacos的密码!!! 使用默认密码可能会导致数据泄露,网站及其不安全! 一、单机部署 1. 选择好需要安装的位置,运行下面命令 2. 进入文件夹,使用docker-compose启动各容器服务 sta",meta:[{property:"og:url",content:"/docs/deploy/docker.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"快速部署"},{property:"og:description",content:"快速部署 前提:已经在上一步准备好docker与docker-compose\r注意:如果正式部署运用HOJ,请修改默认配置的密码,例如Redis、MySQL、Nacos的密码!!! 使用默认密码可能会导致数据泄露,网站及其不安全! 一、单机部署 1. 选择好需要安装的位置,运行下面命令 2. 进入文件夹,使用docker-compose启动各容器服务 sta"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/deploy/docker.html",relativePath:"deploy/docker.md",key:"v-5913b2cf",path:"/deploy/docker/",headers:[{level:2,title:"一、单机部署",slug:"一、单机部署"},{level:2,title:"二、分布式部署",slug:"二、分布式部署"}],readingTime:{minutes:6.23,words:1870},updateTime:"December 22, 2021 13:12",updateTimeStamp:1640149962e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:12}]},{title:"导入用户",frontmatter:{summary:'导入用户 要求如下:\r1. 用户数据导入仅支持csv格式的用户数据。 2. 共七列数据:用户名和密码不能为空,邮箱、真实姓名、性别、昵称和学校可选填,否则该行数据可能导入失败。 3. 第一行不必写(“用户名”,“密码”,“邮箱”,"真实姓名",“性别”,“昵称”,“学校”)这7个列名 4. 性别为男请使用“male”或“0”,女请使用“female”或“1”',meta:[{property:"og:url",content:"/docs/use/import-user.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"导入用户"},{property:"og:description",content:'导入用户 要求如下:\r1. 用户数据导入仅支持csv格式的用户数据。 2. 共七列数据:用户名和密码不能为空,邮箱、真实姓名、性别、昵称和学校可选填,否则该行数据可能导入失败。 3. 第一行不必写(“用户名”,“密码”,“邮箱”,"真实姓名",“性别”,“昵称”,“学校”)这7个列名 4. 性别为男请使用“male”或“0”,女请使用“female”或“1”'},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/import-user.html",relativePath:"use/import-user.md",key:"v-2c1891b5",path:"/use/import-user/",headers:[{level:2,title:"导入用户",slug:"导入用户"}],readingTime:{minutes:.59,words:176},updateTime:"November 14, 2021 13:56",updateTimeStamp:1636869364e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:3}]},{title:"比赛介绍",frontmatter:{summary:"比赛介绍\r总概功能介绍\r支持ACM、OI、IOI赛制; \r支持公开赛、保护赛、私有赛; \r支持线下打印功能; \r支持比赛账号限制功能; \r支持封榜、支持打星队伍、支持关注队伍; \r支持比赛外部榜单显示; \r支持榜单显示用户显示自定义; 两种赛制 一、ACM 比赛模式 在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的Seal ",meta:[{property:"og:url",content:"/docs/use/contest.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"比赛介绍"},{property:"og:description",content:"比赛介绍\r总概功能介绍\r支持ACM、OI、IOI赛制; \r支持公开赛、保护赛、私有赛; \r支持线下打印功能; \r支持比赛账号限制功能; \r支持封榜、支持打星队伍、支持关注队伍; \r支持比赛外部榜单显示; \r支持榜单显示用户显示自定义; 两种赛制 一、ACM 比赛模式 在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的Seal "},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/contest.html",relativePath:"use/contest.md",key:"v-18390f56",path:"/use/contest/",headers:[{level:2,title:"两种赛制",slug:"两种赛制"},{level:3,title:"一、ACM 比赛模式",slug:"一、acm-比赛模式"},{level:3,title:"二、OI 比赛模式",slug:"二、oi-比赛模式"},{level:2,title:"比赛权限",slug:"比赛权限"},{level:2,title:"比赛题目",slug:"比赛题目"},{level:2,title:"比赛管理",slug:"比赛管理"}],readingTime:{minutes:3.07,words:920},updateTime:"December 12, 2021 19:51",updateTimeStamp:1639309915e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:4}]},{title:"自定义前端",frontmatter:{summary:"自定义前端 一、完全自定义前端 直接下载https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue 修改后,使用npm run build,生成一个dist文件夹,结构如下: 将 dist 文件夹复制到服务器上某个目录下,比如 /hoj/www/html/dist,然后修改 docker-compose.yml",meta:[{property:"og:url",content:"/docs/use/update-fe.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"自定义前端"},{property:"og:description",content:"自定义前端 一、完全自定义前端 直接下载https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue 修改后,使用npm run build,生成一个dist文件夹,结构如下: 将 dist 文件夹复制到服务器上某个目录下,比如 /hoj/www/html/dist,然后修改 docker-compose.yml"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/update-fe.html",relativePath:"use/update-fe.md",key:"v-3c9d6c16",path:"/use/update-fe/",headers:[{level:2,title:"一、完全自定义前端",slug:"一、完全自定义前端"},{level:2,title:"二、仅修改图标",slug:"二、仅修改图标"}],readingTime:{minutes:.92,words:277},updateTime:"June 14, 2021 15:18",updateTimeStamp:1623655099e3,createTime:"June 14, 2021 15:18",createTimeStamp:1623655099e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"单体部署⑧——评测数据同步(分布式才需要)",frontmatter:{summary:"单体部署⑧——评测数据同步(分布式才需要)\r本镜像主要是用在于后端服务与判題服务不在同一机器,为了让题目评测数据从主服务器同步于判題服务所在机器而使用的,也就是分布式部署都需要本服务来同步评测数据,包括多台判题机。 一、常规部署 1. 在主后台服务开启rsync实现服务增量同步,本HOJ使用子服务器主动拉取最新评测数据的功能(可选择主服务推的功能,但对主服务",meta:[{property:"og:url",content:"/docs/monomer/rsync.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署⑧——评测数据同步(分布式才需要)"},{property:"og:description",content:"单体部署⑧——评测数据同步(分布式才需要)\r本镜像主要是用在于后端服务与判題服务不在同一机器,为了让题目评测数据从主服务器同步于判題服务所在机器而使用的,也就是分布式部署都需要本服务来同步评测数据,包括多台判题机。 一、常规部署 1. 在主后台服务开启rsync实现服务增量同步,本HOJ使用子服务器主动拉取最新评测数据的功能(可选择主服务推的功能,但对主服务"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/rsync.html",relativePath:"monomer/rsync.md",key:"v-037ce435",path:"/monomer/rsync/",headers:[{level:2,title:"一、常规部署",slug:"一、常规部署"},{level:2,title:"二、docker部署",slug:"二、docker部署"},{level:3,title:"前言",slug:"前言"},{level:3,title:"文件介绍",slug:"文件介绍"}],readingTime:{minutes:3.68,words:1104},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"开启HTTPS",frontmatter:{summary:"开启HTTPS\r单机部署:; 提供server.crt和server.key证书与密钥文件放置/standAlone目录下,与docker-compose.yml和.env文件放置同一位置,然后修改docker-compose.yml中的hoj-frontend的配置\r分布式部署:; 提供server.crt和server.key证书与密钥文件放置/dist",meta:[{property:"og:url",content:"/docs/deploy/open-https.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"开启HTTPS"},{property:"og:description",content:"开启HTTPS\r单机部署:; 提供server.crt和server.key证书与密钥文件放置/standAlone目录下,与docker-compose.yml和.env文件放置同一位置,然后修改docker-compose.yml中的hoj-frontend的配置\r分布式部署:; 提供server.crt和server.key证书与密钥文件放置/dist"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/deploy/open-https.html",relativePath:"deploy/open-https.md",key:"v-2411e8cf",path:"/deploy/open-https/",readingTime:{minutes:.78,words:235},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"单体部署①——MySQL部署",frontmatter:{summary:"单体部署①——MySQL部署 首先 先下载hoj-deploy 前言 当前文件夹为打包hoj-mysql镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。 docker run启动 docker-compose 启动 文件介绍 1. bcrypt 此文件为go打包的可执行文件,作用是生成经过bcrypt加密的对应nacos管",meta:[{property:"og:url",content:"/docs/monomer/mysql.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署①——MySQL部署"},{property:"og:description",content:"单体部署①——MySQL部署 首先 先下载hoj-deploy 前言 当前文件夹为打包hoj-mysql镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。 docker run启动 docker-compose 启动 文件介绍 1. bcrypt 此文件为go打包的可执行文件,作用是生成经过bcrypt加密的对应nacos管"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/mysql.html",relativePath:"monomer/mysql.md",key:"v-59936b95",path:"/monomer/mysql/",headers:[{level:2,title:"前言",slug:"前言"},{level:2,title:"文件介绍",slug:"文件介绍"},{level:3,title:"1. bcrypt",slug:"_1-bcrypt"},{level:3,title:"2. hoj.sql",slug:"_2-hoj-sql"},{level:3,title:"3. nacos.sql",slug:"_3-nacos-sql"},{level:3,title:"4. run.sh",slug:"_4-run-sh"},{level:3,title:"5. Dockerfile",slug:"_5-dockerfile"}],readingTime:{minutes:2.43,words:730},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"评论管理",frontmatter:{summary:"评论管理\r后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等; \r后台管理员可以查看对应讨论帖的举报内容;",meta:[{property:"og:url",content:"/docs/use/discussion-admin.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"评论管理"},{property:"og:description",content:"评论管理\r后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等; \r后台管理员可以查看对应讨论帖的举报内容;"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/discussion-admin.html",relativePath:"use/discussion-admin.md",key:"v-5e6a771d",path:"/use/discussion-admin/",readingTime:{minutes:.37,words:111},updateTime:"May 23, 2021 22:43",updateTimeStamp:1621780986e3,createTime:"May 23, 2021 22:43",createTimeStamp:1621780986e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"单体部署⑦——前端部署",frontmatter:{summary:"单体部署⑦——前端部署 一、常规部署 (1). 安装nginx\r注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌 1. 使用apt安装 2. 路径介绍\r/usr/sbin/nginx:主程序; \r/etc/nginx:存放配置文件; \r/usr/share/nginx:存放静态文件; \r/var/log/nginx:存放日志; 3. 启动ngin",meta:[{property:"og:url",content:"/docs/monomer/frontend.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署⑦——前端部署"},{property:"og:description",content:"单体部署⑦——前端部署 一、常规部署 (1). 安装nginx\r注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌 1. 使用apt安装 2. 路径介绍\r/usr/sbin/nginx:主程序; \r/etc/nginx:存放配置文件; \r/usr/share/nginx:存放静态文件; \r/var/log/nginx:存放日志; 3. 启动ngin"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/frontend.html",relativePath:"monomer/frontend.md",key:"v-dfa5d326",path:"/monomer/frontend/",headers:[{level:2,title:"一、常规部署",slug:"一、常规部署"},{level:3,title:"(1). 安装nginx",slug:"_1-安装nginx"},{level:3,title:"(2). 部署",slug:"_2-部署"},{level:2,title:"二、docker部署",slug:"二、docker部署"},{level:3,title:"文件介绍",slug:"文件介绍"}],readingTime:{minutes:5.05,words:1514},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"单体部署④——Nacos部署",frontmatter:{summary:"单体部署④——Nacos部署 docker部署 常规部署 请自行百度下载修改配置",meta:[{property:"og:url",content:"/docs/monomer/nacos.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署④——Nacos部署"},{property:"og:description",content:"单体部署④——Nacos部署 docker部署 常规部署 请自行百度下载修改配置"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/nacos.html",relativePath:"monomer/nacos.md",key:"v-64c9a555",path:"/monomer/nacos/",headers:[{level:2,title:"docker部署",slug:"docker部署"},{level:2,title:"常规部署",slug:"常规部署"}],readingTime:{minutes:.25,words:75},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"如何更新",frontmatter:{summary:"如何更新 一、无二次开发的更新\r2021.09.21之后部署hoj的请看下面操作 请在对应的docker-compose.yml当前文件夹下执行docker-compose pull拉取最新镜像,然后重新docker-compose up -d即可。\r2021.09.21之前部署hoj的请看下面操作 1、修改MySQL8.0默认的密码加密方式 (1)进行ho",meta:[{property:"og:url",content:"/docs/deploy/update.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"如何更新"},{property:"og:description",content:"如何更新 一、无二次开发的更新\r2021.09.21之后部署hoj的请看下面操作 请在对应的docker-compose.yml当前文件夹下执行docker-compose pull拉取最新镜像,然后重新docker-compose up -d即可。\r2021.09.21之前部署hoj的请看下面操作 1、修改MySQL8.0默认的密码加密方式 (1)进行ho"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/deploy/update.html",relativePath:"deploy/update.md",key:"v-6fe0c0a2",path:"/deploy/update/",headers:[{level:2,title:"一、无二次开发的更新",slug:"一、无二次开发的更新"},{level:3,title:"1、修改MySQL8.0默认的密码加密方式",slug:"_1、修改mysql8-0默认的密码加密方式"},{level:3,title:"2、 添加hoj-mysql-checker模块",slug:"_2、-添加hoj-mysql-checker模块"},{level:2,title:"二、自定义前端的更新",slug:"二、自定义前端的更新"}],readingTime:{minutes:2.31,words:694},updateTime:"December 14, 2021 13:02",updateTimeStamp:1639458152e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:2}]},{title:"多个判题机",frontmatter:{summary:"多个判题机 前言 不同判题机之间是通过rsync进行数据同步的,所以需要配置相应的rsync服务。 同时注意以下两点: 1. 保证rsync-slave服务的密码与主服务rsync-master的数据同步密码一致 2. rsync-slave服务(判题机服务器)拉取主服务rsync-master的评测数据是每100s一次,所以后台上传评测数据后,需等待大概1",meta:[{property:"og:url",content:"/docs/deploy/multi-judgeserver.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"多个判题机"},{property:"og:description",content:"多个判题机 前言 不同判题机之间是通过rsync进行数据同步的,所以需要配置相应的rsync服务。 同时注意以下两点: 1. 保证rsync-slave服务的密码与主服务rsync-master的数据同步密码一致 2. rsync-slave服务(判题机服务器)拉取主服务rsync-master的评测数据是每100s一次,所以后台上传评测数据后,需等待大概1"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/deploy/multi-judgeserver.html",relativePath:"deploy/multi-judgeserver.md",key:"v-393a503f",path:"/deploy/multi-judgeserver/",headers:[{level:2,title:"前言",slug:"前言"},{level:2,title:"单体部署",slug:"单体部署"},{level:2,title:"分布式部署",slug:"分布式部署"}],readingTime:{minutes:3.13,words:938},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{title:"取消前端免费CDN",frontmatter:{summary:"取消前端免费CDN 由于有的机房的网络不支持一些域名的访问,有防火墙挡住,所以可能前端页面的js和css的CDN访问不了,导致页面打不开。\rhoj挂载了一些前端库的免费CDN,全部都是该域名cdn.jsdelivr.net下的免费CDN 可以在对应的电脑浏览器上打开以下链接,如果能正常访问则没有问题。\rhoj-frontend(前端vue项目)如果不挂载任何",meta:[{property:"og:url",content:"/docs/use/close-free-cdn.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"取消前端免费CDN"},{property:"og:description",content:"取消前端免费CDN 由于有的机房的网络不支持一些域名的访问,有防火墙挡住,所以可能前端页面的js和css的CDN访问不了,导致页面打不开。\rhoj挂载了一些前端库的免费CDN,全部都是该域名cdn.jsdelivr.net下的免费CDN 可以在对应的电脑浏览器上打开以下链接,如果能正常访问则没有问题。\rhoj-frontend(前端vue项目)如果不挂载任何"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/use/close-free-cdn.html",relativePath:"use/close-free-cdn.md",key:"v-7e1b6622",path:"/use/close-free-cdn/",headers:[{level:2,title:"一、全部打包且部署",slug:"一、全部打包且部署"},{level:2,title:"二、全部打包但有个人CDN服务器",slug:"二、全部打包但有个人cdn服务器"}],readingTime:{minutes:4.53,words:1359},updateTime:"December 12, 2021 12:02",updateTimeStamp:1639281737e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:3}]},{title:"单体部署⑥——判题服务部署",frontmatter:{summary:'单体部署⑥——判题服务部署\r" HOJ使用安全沙盒的是开源的go-judge,具体使用可看该项目文档。"\r" 注意:判题服务可以部署多台云服务器,步骤一样" 一、常规部署 1. 下载本项目,git clone或者download zip 2. 修改本项目路径下/hoj-springboot/JudgeServer/src/main/resources/boo',meta:[{property:"og:url",content:"/docs/monomer/judgeserver.html"},{property:"og:site_name",content:"HOJ"},{property:"og:title",content:"单体部署⑥——判题服务部署"},{property:"og:description",content:'单体部署⑥——判题服务部署\r" HOJ使用安全沙盒的是开源的go-judge,具体使用可看该项目文档。"\r" 注意:判题服务可以部署多台云服务器,步骤一样" 一、常规部署 1. 下载本项目,git clone或者download zip 2. 修改本项目路径下/hoj-springboot/JudgeServer/src/main/resources/boo'},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/monomer/judgeserver.html",relativePath:"monomer/judgeserver.md",key:"v-50604095",path:"/monomer/judgeserver/",headers:[{level:2,title:"一、常规部署",slug:"一、常规部署"},{level:2,title:"二、docker部署",slug:"二、docker部署"},{level:3,title:"前言",slug:"前言"},{level:3,title:"文件介绍",slug:"文件介绍"},{level:3,title:"1. SandBox",slug:"_1-sandbox"},{level:3,title:"2. check_nacos.sh",slug:"_2-check-nacos-sh"},{level:3,title:"3. run.sh",slug:"_3-run-sh"},{level:3,title:"4. Dockerfile",slug:"_4-dockerfile"}],readingTime:{minutes:5.78,words:1735},updateTime:"December 6, 2021 21:04",updateTimeStamp:1638795885e3,createTime:"December 6, 2021 21:04",createTimeStamp:1638795885e3,contributors:[{name:"Himit_ZH",email:"372347736@qq.com",commits:1}]},{frontmatter:{layout:"Blog",summary:"",meta:[{property:"og:url",content:"/docs/article/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"website"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/article/",key:"v-6453f364",path:"/article/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",summary:"",meta:[{property:"og:url",content:"/docs/star/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/star/",key:"v-4340f7e8",path:"/star/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",summary:"",meta:[{property:"og:url",content:"/docs/encrypt/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/encrypt/",key:"v-7d484ebf",path:"/encrypt/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",summary:"",meta:[{property:"og:url",content:"/docs/slide/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"article"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/slide/",key:"v-2470be33",path:"/slide/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",summary:"",meta:[{property:"og:url",content:"/docs/timeline/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"website"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/timeline/",key:"v-6319eb4e",path:"/timeline/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",title:"Tag",summary:"",meta:[{property:"og:url",content:"/docs/tag/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"website"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/tag/",key:"v-b1564aac",path:"/tag/",readingTime:{minutes:0,words:0}},{frontmatter:{layout:"Blog",title:"Category",summary:"",meta:[{property:"og:url",content:"/docs/category/"},{property:"og:site_name",content:"HOJ"},{property:"og:type",content:"website"},{property:"og:locale",content:"en-US"},{name:"twitter:card",content:"summary_large_image"},{name:"twitter:image:alt",content:"HOJ"}]},regularPath:"/category/",key:"v-28e6393c",path:"/category/",readingTime:{minutes:0,words:0}}],themeConfig:{logo:"/favicon.ico",nav:[{text:"Demo",link:"https://hdoi.cn/"},{text:"Gitee",link:"https://gitee.com/himitzh0730/hoj"}],pwa:{cacheHTML:!1},sidebarDepth:2,lastUpdated:"上次更新",hostname:"https://hcode.top",repo:"HimitZH/HOJ",pageInfo:!1,copyright:!1,mdEnhance:{align:!0,sup:!0,sub:!0,footnote:!0,tex:!0},docsRepo:"HimitZH/HOJ/docs",docsBranch:"docs",editLinks:!0,editLinkText:"文档有锅?点我修复",displayAllHeaders:!0,smoothScroll:!0,sidebar:[{title:"开始介绍",collapsable:!0,children:["introducition/"]},{title:"快速部署",collapsable:!0,children:["deploy/","deploy/docker","deploy/open-https","deploy/multi-judgeserver","deploy/update","deploy/how-to-backup"]},{title:"单体部署",collapsable:!0,children:["monomer/mysql","monomer/mysql-checker","monomer/redis","monomer/nacos","monomer/backend","monomer/judgeserver","monomer/frontend","monomer/rsync"]},{title:"开发文档",collapsable:!0,children:["develop/db","develop/sandbox"]},{title:"使用文档",collapsable:!0,children:["use/testcase","use/contest","use/import-problem","use/import-user","use/admin-user","use/notice-announcement","use/discussion-admin","use/update-fe","use/close-free-cdn","use/spj"]}],locales:{"/":{lang:"en-US",selectText:"Language",label:"English",ariaLabel:"Select language",meta:{contributor:"Contributors",editLink:"Edit this page",updateTime:"Last update"},themeColor:{themeColor:"Theme Color",themeMode:"Theme Mode"},encrypt:{title:"Please enter password",errorHint:"Please enter the correct password!"},error404:{hint:["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],back:"Go back",home:"Take me home"},blog:{article:"Articles",articleList:"Article List",category:"Category",tag:"Tags",timeline:"Timeline",timelineText:"Yesterday Once More!",allText:"All",intro:"Personal Intro",star:"Star",slides:"Slides",encrypt:"Encrypted"}}}},locales:{"/":{lang:"en-US",path:"/"}}};n(162);const Jt={"/zh/":{backToTop:"返回顶部",pagination:{prev:"上一页",next:"下一页",navigate:"跳转到",button:"前往",errorText:"请输入 1 到 $page 之前的页码!"}},"/en/":{backToTop:"Back to top",pagination:{prev:"Prev",next:"Next",navigate:"Jump to",button:"Go",errorText:"Please enter a number between 1 and $page !"}},"/de/":{backToTop:"Zurück nach oben.",pagination:{prev:"Vorheriges",next:"Nächstes",navigate:"Springe zu",button:"Los",errorText:"Bitte gib eine Nummer zwischen 1 und $page ein!"}},"/vi/":{backToTop:"Trở lại đầu trang",pagination:{prev:"Bài kế",next:"Bài trước",navigate:"Đi đến",button:"Đi",errorText:"Xin hãy nhập 1 số từ 1 đến $page !"}},"/uk/":{backToTop:"Повернутися до початку",pagination:{prev:"Попередня",next:"Далі",navigate:"Перейти до",button:"Перейти",errorText:"Будь ласка, введіть число від 1 до $page !"}},"/ru/":{backToTop:"Вернуться к началу",pagination:{prev:"Предыдущая",next:"Далее",navigate:"Перейти к",button:"Перейти",errorText:"Пожалуйста, введите число от 1 до $page !"}},"/":{backToTop:"Back to top",pagination:{prev:"Prev",next:"Next",navigate:"Jump to",button:"Go",errorText:"Please enter a number between 1 and $page !"}}};let Ut;var zt=r.a.extend({name:"BackToTop",props:{threshold:{type:Number,default:300}},data:()=>({scrollTop:0}),computed:{thresholdDistance(){return"number"==typeof this.$themeConfig.backToTop?this.$themeConfig.backToTop:this.threshold},isDisplay(){const e=!1!==this.$themeConfig.backToTop,t=this.$page.frontmatter.backToTop;return(t||e&&!1!==t)&&this.scrollTop>this.thresholdDistance},hint(){return Jt[this.$localePath||"/"].backToTop}},mounted(){this.scrollTop=this.getScrollTop(),Ut=St()(()=>{this.scrollTop=this.getScrollTop()},100),window.addEventListener("scroll",Ut)},beforeDestroy(){window.removeEventListener("scroll",Ut)},methods:{getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,scrollToTop(){window.scrollTo({top:0,behavior:"smooth"}),this.scrollTop=0}}}),Vt=(n(163),Object(qt.a)(zt,(function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"fade"}},[this.isDisplay?t("button",{staticClass:"back-to-top",attrs:{"aria-label":this.hint,"data-balloon-pos":"left"},on:{click:this.scrollToTop}},[t("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M512 0C229.517 0 0 229.517 0 512s227.752 512 512 512c282.483 0 512-227.752 512-512C1024 229.517 794.483\n 0 512 0zM351.338 271.89h305.434c14.125 0 26.483 12.358 26.483 26.482s-12.358 26.483-26.483\n 26.483H351.338c-14.124 0-26.483-12.358-26.483-26.483 0-15.89 12.359-26.482 26.483-26.482z\n m331.917 303.669c-12.358 12.358-33.545 12.358-45.903 0L531.42 471.393v270.124c0 14.124-12.359\n 26.483-26.483 26.483s-26.483-12.359-26.483-26.483v-271.89l-105.93 104.166c-12.36 12.359-33.546 12.359-45.904\n 0-12.359-12.359-12.359-31.78 0-45.903l155.365-151.835c7.062-7.062 14.124-8.827 22.952-8.827s15.89 3.53 22.952\n 8.827L683.255 527.89c12.359 15.89 12.359 35.31 0 47.669z",fill:"currentColor"}})])]):this._e()])}),[],!1,null,null,null).exports),Wt=r.a.extend({name:"Badge",functional:!0,props:{type:{type:String,default:"tip"},text:{type:String,default:""},vertical:{type:String,default:"top"},color:{type:String,default:""}},render(e,{props:t,slots:n}){const r={class:["badge",t.type],style:{verticalAlign:t.vertical}};return t.color&&(r.class.push("diy"),r.style.backgroundColor=t.color,r["data-color"]=t.color),e("span",r,t.text||n().default)}}),Zt=(n(164),Object(qt.a)(Wt,void 0,void 0,!1,null,"7b453e57",null).exports),Yt=r.a.extend({name:"BreadCrumb",computed:{enable(){const e=!1!==this.$themeConfig.breadcrumb,t=this.$page.frontmatter.breadcrumb;return(e&&!1!==t||!0===t)&&this.config.length>1},iconEnable(){const e=!1!==this.$themeConfig.breadcrumbIcon,t=this.$page.frontmatter.breadcrumbIcon;return this.enable&&(e&&!1!==t||!0===t)},iconPrefix(){const{iconPrefix:e}=this.$themeConfig;return""===e?"":e||"icon-"},config(){const e=[],{pages:t}=this.$site,n=this.getLinks(this.$route);for(let r=1;r{o!==t.length-1?(r+=e+"/",n.push(r)):""!==e&&(r+=e,n.push(r))}),n}}}),Qt=(n(165),Object(qt.a)(Yt,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{staticClass:"breadcrumb",class:{disable:!e.enable}},[e.enable?n("ol",{attrs:{vocab:"https://schema.org/",typeof:"BreadcrumbList"}},e._l(e.config,(function(t,r){return n("li",{key:t.url,class:{"is-active":e.config.length-1===r},attrs:{property:"itemListElement",typeof:"ListItem"}},[n("RouterLink",{attrs:{to:t.url,property:"item",typeof:"WebPage"}},[t.icon&&e.iconEnable?n("i",{class:"iconfont "+e.iconPrefix+t.icon}):e._e(),e._v(" "),n("span",{attrs:{property:"name"}},[e._v(e._s(t.title))])]),e._v(" "),n("meta",{attrs:{property:"position",content:r+1}})],1)})),0):e._e()])}),[],!1,null,null,null).exports),Kt=r.a.extend({name:"CodeGroup",data:()=>({codeTabs:[],activeTabIndex:-1}),watch:{activeTabIndex(e){this.activateCodeTab(e)}},mounted(){this.loadTabs()},methods:{loadTabs(){this.codeTabs=(this.$slots.default||[]).filter(e=>Boolean(e.componentOptions)).map((e,t)=>{const n=e.componentOptions.propsData;return n.active&&(this.activeTabIndex=t),{title:n.title,element:e.elm}}),-1===this.activeTabIndex&&this.codeTabs.length>0&&(this.activeTabIndex=0),this.activateCodeTab(0)},changeCodeTab(e){this.activeTabIndex=e},keyDownHandler(e,t){" "===e.key||"Enter"===e.key?(e.preventDefault(),this.activeTabIndex=t):"ArrowRight"===e.key?(e.preventDefault(),t+1=0&&(this.activeTabIndex=t-1,this.$refs.tab[t-1].focus()))},activateCodeTab(e){this.codeTabs.forEach((t,n)=>{const{element:r}=t;r&&(e===n?r.classList.add("active"):r.classList.remove("active"))})}}}),Xt=(n(166),Object(qt.a)(Kt,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ClientOnly",[n("div",{staticClass:"code-group"},[n("div",{staticClass:"code-group-nav",attrs:{"v:if":"codeTabs.length"}},e._l(e.codeTabs,(function(t,r){return n("button",{key:t.title,ref:"tab",refInFor:!0,staticClass:"code-group-nav-tab",class:{active:r===e.activeTabIndex},attrs:{"aria-pressed":r===e.activeTabIndex,"aria-expanded":r===e.activeTabIndex},domProps:{textContent:e._s(t.title)},on:{click:function(t){return e.changeCodeTab(r)},keydown:function(t){return e.keyDownHandler(t,r)}}})})),0),e._v(" "),e._t("default"),e._v(" "),e.codeTabs.length?e._e():n("pre",{staticClass:"hints",domProps:{textContent:e._s("// Make sure to add code blocks to your code group")}})],2)])}),[],!1,null,null,null).exports),Gt=r.a.extend({name:"CodeGroupItem",props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},mounted(){this.$parent&&this.$parent.loadTabs&&this.$parent.loadTabs()}}),en=(n(167),Object(qt.a)(Gt,(function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"code-group-item",class:{active:this.active},attrs:{"aria-selected":this.active}},[this._t("default")],2)}),[],!1,null,null,null).exports),tn=r.a.extend({name:"Pagination",model:{prop:"currentPage",event:"change"},props:{total:{type:Number,default:10},perPage:{type:Number,default:10},currentPage:{type:Number,default:1}},data:()=>({input:""}),computed:{totalPages(){return Math.ceil(this.total/this.perPage)},enable(){return Boolean(this.totalPages)&&1!==this.totalPages},displayLeftEllipsis(){return!(this.totalPages<7)&&this.currentPage>4},displayRightEllipsis(){return!(this.totalPages<7)&&this.currentPage=7&&(e<=4&&e4&&e>=t-3?(r=t,n=t-4):t>7&&(n=e-2,r=e+2));for(let e=n;e<=r;e++)o.push(e);return o},i18n(){return Jt[this.$localePath||"/"].pagination}},mounted(){const{index:e}=this.$route.query;this.navigate(e?Number(e):1)},methods:{navigate(e){const t=Object.assign({},this.$route.query);t.page===e.toString()||1===e&&!t.page||(this.$emit("change",e),1===e?delete t.page:t.page=e.toString(),this.$router.push({path:this.$route.path,query:t}))},jumpPage(e){const t=parseInt(e);t<=this.totalPages&&t>0?this.navigate(t):alert(this.i18n.errorText.replace(/\$page/g,this.totalPages.toString()))}}}),nn=(n(168),Object(qt.a)(tn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"pagination-wrapper"},[e.enable?n("div",{staticClass:"pagination-list"},[n("div",{staticClass:"btn-group"},[e.currentPage>1?n("div",{staticClass:"prev",attrs:{role:"navigation",unselectable:"on"},on:{click:function(t){return e.navigate(e.currentPage-1)}}},[e._v("\n "+e._s(e.i18n.prev)+"\n ")]):e._e(),e._v(" "),e.displayLeftEllipsis?n("div",{attrs:{role:"navigation"},on:{click:function(t){return e.navigate(1)}}},[e._v("\n 1\n ")]):e._e(),e._v(" "),e.displayLeftEllipsis?n("div",{staticClass:"ellipsis"},[e._v("...")]):e._e(),e._v(" "),e._l(e.indexs,(function(t){return n("div",{key:t,class:{active:e.currentPage===t},attrs:{role:"navigation"},on:{click:function(n){return e.navigate(t)}}},[e._v("\n "+e._s(t)+"\n ")])})),e._v(" "),e.displayRightEllipsis?n("div",{staticClass:"ellipsis"},[e._v("...")]):e._e(),e._v(" "),e.displayRightEllipsis?n("div",{attrs:{role:"navigation"},on:{click:function(t){return e.navigate(e.totalPages)}}},[e._v("\n "+e._s(e.totalPages)+"\n ")]):e._e(),e._v(" "),e.currentPage({canFullscreen:!1,isFullscreen:!1}),mounted(){this.canFullscreen=rn.isEnabled&&!1!==this.$themeConfig.fullscreen},methods:{click(){rn.isEnabled&&rn.toggle().then(()=>{this.isFullscreen=rn.isFullscreen})}}}),an=(n(169),Object(qt.a)(on,(function(){var e=this.$createElement,t=this._self._c||e;return this.canFullscreen?t("button",{class:this.isFullscreen?"cancel-full-screen":"full-screen",attrs:{"aria-pressed":this.isFullscreen},on:{click:this.click}},[t("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[this.isFullscreen?t("path",{attrs:{d:"M778.46755555 78.62044445H247.92177778c-102.51377778 0-186.02666667 83.51288889-186.02666667 186.02666666v530.432c0 102.51377778 83.51288889 186.02666667 186.02666667 186.02666667h530.432c102.51377778 0 186.70933333-83.51288889 186.02666667-186.02666667V264.64711111c0.11377778-102.62755555-83.39911111-186.02666667-185.9128889-186.02666666zM250.88 574.35022222h171.12177778c23.32444445 0 43.12177778 19.11466667 43.80444444 43.80444445v171.12177778c0 24.00711111-19.11466667 43.12177778-43.12177777 43.12177777-12.06044445 0-22.64177778-5.00622222-30.37866667-12.74311111s-12.74311111-19.11466667-12.74311111-30.37866666v-66.44622223L224.59733333 877.90933333c-16.95288889 16.95288889-44.60088889 16.95288889-61.55377778 0-16.95288889-16.95288889-16.95288889-44.60088889 0-61.55377778l154.96533334-154.96533333h-66.44622222c-24.00711111 0-43.12177778-19.11466667-43.12177778-43.12177777 0-24.12088889 18.432-43.91822222 42.43911111-43.91822223z m521.89866667-98.87288889H601.65688889c-23.32444445 0-43.12177778-19.11466667-43.80444444-43.80444444V260.55111111c0-24.00711111 19.11466667-43.12177778 43.12177777-43.12177778 12.06044445 0 22.64177778 5.00622222 30.37866667 12.74311112s12.74311111 19.11466667 12.74311111 30.37866666v66.44622222l154.96533333-154.96533333c16.95288889-16.95288889 44.60088889-16.95288889 61.55377778 0 16.95288889 16.95288889 16.95288889 44.60088889 0 61.55377778L705.536 388.55111111h66.44622222c24.00711111 0 43.12177778 19.11466667 43.12177778 43.12177778 0.11377778 24.00711111-18.31822222 43.80444445-42.32533333 43.80444444z"}}):t("path",{attrs:{d:"M762.77333333 90.24H265.49333333c-96.10666667 0-174.4 78.29333333-174.4 174.4v497.28c0 96.10666667 78.29333333 174.4 174.4 174.4h497.28c96.10666667 0 175.04-78.29333333 174.4-174.4V264.64c0-96.21333333-78.18666667-174.4-174.4-174.4z m-387.2 761.17333333H215.04c-21.86666667 0-40.42666667-17.92-41.06666667-41.06666666V649.92c0-22.50666667 17.92-40.42666667 40.42666667-40.42666667 11.30666667 0 21.22666667 4.69333333 28.48 11.94666667 7.25333333 7.25333333 11.94666667 17.92 11.94666667 28.48v62.29333333l145.28-145.28c15.89333333-15.89333333 41.81333333-15.89333333 57.70666666 0 15.89333333 15.89333333 15.89333333 41.81333333 0 57.70666667L312.53333333 769.92h62.29333334c22.50666667 0 40.42666667 17.92 40.42666666 40.42666667s-17.17333333 41.06666667-39.68 41.06666666z m274.66666667-685.65333333H810.66666667c21.86666667 0 40.42666667 17.92 41.06666666 41.06666667v160.42666666c0 22.50666667-17.92 40.42666667-40.42666666 40.42666667-11.30666667 0-21.22666667-4.69333333-28.48-11.94666667-7.25333333-7.25333333-11.94666667-17.92-11.94666667-28.48V305.06666667L625.6 450.34666667c-15.89333333 15.89333333-41.81333333 15.89333333-57.70666667 0-15.89333333-15.89333333-15.89333333-41.81333333 0-57.70666667l145.28-145.28h-62.29333333c-22.50666667 0-40.42666667-17.92-40.42666667-40.42666667s17.17333333-41.17333333 39.78666667-41.17333333z"}})])]):this._e()}),[],!1,null,null,null).exports);var sn=({Vue:e})=>{e.component("BackToTop",Vt),e.component("Badge",Zt),e.component("BreadCrumb",Qt),e.component("CodeGroup",Xt),e.component("CodeGroupItem",en),e.component("Pagination",nn),e.component("ScreenFull",an)};class cn{constructor(e){this.registration=e}update(){return this.registration.update()}skipWaiting(){const e=this.registration.waiting;return e?(console.log("[PWA]: Execute worker.skipWaiting()."),new Promise((t,n)=>{const r=new MessageChannel;r.port1.onmessage=e=>{console.log("[PWA]: Finish worker.skipWaiting()."),e.data.error?n(e.data.error):t(e.data)},e.postMessage({type:"skip-waiting"},[r.port2])})):Promise.resolve()}}var ln=Object(qt.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{staticClass:"icon icon-arrow-left",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[t("path",{attrs:{d:"M401.4 224h-214l83-79.4c11.9-12.5 11.9-32.7 0-45.2s-31.2-12.5-43.2 0L89 233.4c-6 5.8-9 13.7-9 22.4v.4c0 8.7 3 16.6 9 22.4l138.1 134c12 12.5 31.3 12.5 43.2 0 11.9-12.5 11.9-32.7 0-45.2l-83-79.4h214c16.9 0 30.6-14.3 30.6-32 .1-18-13.6-32-30.5-32z"}})])}),[],!1,null,null,null).exports,un=Object(qt.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{staticClass:"icon icon-arrow-right",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"}},[t("path",{attrs:{d:"M284.9 412.6l138.1-134c6-5.8 9-13.7 9-22.4v-.4c0-8.7-3-16.6-9-22.4l-138.1-134c-12-12.5-31.3-12.5-43.2 0-11.9 12.5-11.9 32.7 0 45.2l83 79.4h-214c-17 0-30.7 14.3-30.7 32 0 18 13.7 32 30.6 32h214l-83 79.4c-11.9 12.5-11.9 32.7 0 45.2 12 12.5 31.3 12.5 43.3 0z"}})])}),[],!1,null,null,null).exports,pn=Object(qt.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{staticClass:"icon close-icon",attrs:{width:"23",height:"22",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M1.12.358a1.224 1.224 0 011.729 0l8.92 8.914L20.686.358a1.224 1.224 0 011.73 1.728L13.497 11l8.92 8.913a1.222 1.222 0 11-1.73 1.729l-8.919-8.913-8.92 8.913a1.224 1.224 0 01-1.729-1.729L10.04 11l-8.92-8.914a1.222 1.222 0 010-1.728z",fill:"currentColor"}})])}),[],!1,null,null,null).exports;const dn={"/zh/":{install:"安装",iOSInstall:"点击分享按钮然后点击“添加到主屏幕”",cancel:"取消",close:"关闭",prevImage:"上一张图片",nextImage:"下一张图片",desc:"详情",feature:"主要特色",explain:"该应用可以安装在您的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和您的操作系统安全地进行交互。",update:"发现新内容可用"},"/en/":{install:"Install",iOSInstall:"Tap the share button and then 'Add to Homescreen'",cancel:"Cancel",close:"Close",prevImage:"Previous Image",nextImage:"Next Image",desc:"Description",feature:"Key Features",explain:"This app can be installed on your PC or mobile device. This will allow this web app to look and behave like any other installed app. You will find it in your app lists and be able to pin it to your home screen, start menus or task bars. This installed web app will also be able to safely interact with other apps and your operating system. ",update:"New content is available."},"/de/":{install:"Installieren",iOSInstall:"Drucke den Share-Button und dan 'zu Homescreen hinzufügen'",cancel:"Abbrechen",close:"Schließen",prevImage:"Vorheriges Bild",nextImage:"Nächstes Bild",desc:"Berschreibung",feature:"Features",explain:"Diese App kann auf Ihrem PC oder Mobilgerät installiert werden. Dadurch sieht diese Web-App aus und verhält sich wie jede andere installierte App. Sie finden sie in Ihren App-Listen und können sie an den Startbildschirm, die Startmenüs oder die Taskleisten anheften. Diese installierte Web-App kann auch sicher mit anderen Apps und Ihrem Betriebssystem interagieren.",update:"Neue Inhalte sind verfügbar."},"/vi/":{install:"Tải về",iOSInstall:"Nhấn vào nút chia sẻ và sau đó 'Thêm vào Màn hình chính'",cancel:"Huỷ bỏ",close:"Đóng",prevImage:"Hình ảnh trước đó",nextImage:"Hình ảnh tiếp theo",desc:"Sự miêu tả",feature:"Các tính năng chính",explain:"Ứng dụng này có thể được cài đặt trên PC hoặc thiết bị di động của bạn. Điều này sẽ cho phép ứng dụng web này trông và hoạt động giống như bất kỳ ứng dụng đã cài đặt nào khác. Bạn sẽ tìm thấy nó trong danh sách ứng dụng của mình và có thể ghim nó vào màn hình chính, menu bắt đầu hoặc thanh tác vụ. Ứng dụng web đã cài đặt này cũng sẽ có thể tương tác an toàn với các ứng dụng khác và hệ điều hành của bạn.",update:"Đã có nội dung mới"},"/uk/":{install:"Встановити",iOSInstall:"Торкніться кнопки «Поділитися», а потім «Додати на головний екран»",cancel:"Скасувати",close:"Закрити",prevImage:"Попереднє зображення",nextImage:"Наступне зображення",desc:"Опис",feature:"Основні характеристики",explain:"Цю програму можна встановити на ПК або мобільний пристрій. Це дозволить цій веб-програмі виглядати та вести себе як будь-яка інша встановлена програма. Ви знайдете її у списках додатків і зможете закріпити на головному екрані, в меню «Пуск» або на панелі завдань. Ця встановлена веб-програма також зможе безпечно взаємодіяти з іншими програмами та вашою операційною системою. ",update:"Доступний новий контент."},"/ru/":{install:"Установить",iOSInstall:"Нажмите кнопку «Поделиться», а затем «Добавить на главный экран».",cancel:"Отменить",close:"Закрыть",prevImage:"Предыдущее изображение",nextImage:"Следующее изображение",desc:"Описание",feature:"Ключевые характеристики",explain:"Это приложение может быть установлено на вашем компьютере или мобильном устройстве. Это позволит веб-приложению выглядеть и вести себя как любое другое установленное приложение. Вы найдете его в списках приложений и сможете закрепить его на домашнем экране, в меню Пуск или на панели задач. Установленное веб-приложение также сможет безопасно взаимодействовать с другими приложениями и операционной системой. ",update:"Доступен новый контент."},"/":{install:"Install",iOSInstall:"Tap the share button and then 'Add to Homescreen'",cancel:"Cancel",close:"Close",prevImage:"Previous Image",nextImage:"Next Image",desc:"Description",feature:"Key Features",explain:"This app can be installed on your PC or mobile device. This will allow this web app to look and behave like any other installed app. You will find it in your app lists and be able to pin it to your home screen, start menus or task bars. This installed web app will also be able to safely interact with other apps and your operating system. ",update:"New content is available."}};let fn,hn;var mn=r.a.extend({name:"PWAInstallModal",components:{ArrowLeftIcon:ln,ArrowRightIcon:un,CloseIcon:pn},props:{useHint:{type:Boolean,default:!1}},data:()=>({manifest:{},isIOS:!1,deferredprompt:null}),computed:{i18n(){return dn[this.$localePath||"/"]}},mounted(){window.hasOwnProperty("BeforeInstallPromptEvent")&&(hn=e=>{this.deferredprompt=e,this.$emit("can-install",!0),e.preventDefault()},window.addEventListener("beforeinstallprompt",hn),this.getManifest(),fn=e=>{"Escape"===e.key&&this.$emit("toogle",!1)},document.addEventListener("keyup",fn))},beforeDestroy(){window.hasOwnProperty("BeforeInstallPromptEvent")&&document.removeEventListener("beforeinstallprompt",hn),document.removeEventListener("keyup",fn)},methods:{async getManifest(){const e=localStorage.getItem("manifest");if(e)this.manifest=JSON.parse(e);else try{const e=await fetch("/docs/manifest.webmanifest"),t=await e.json();this.manifest=t,localStorage.setItem("manifest",JSON.stringify(t))}catch(e){console.error("Error getting manifest, check that you have a valid web manifest or network connection")}},scrollToLeft(){const e=document.querySelector(".screenshot");e&&e.scrollBy({left:-e.clientWidth,top:0,behavior:"smooth"})},scrollToRight(){const e=document.querySelector(".screenshot");e&&e.scrollBy({left:e.clientWidth,top:0,behavior:"smooth"})},async install(){if(this.deferredprompt){this.deferredprompt.prompt(),document.dispatchEvent(new CustomEvent("show"));if("accepted"===(await this.deferredprompt.userChoice).outcome)return console.info("PWA has been installed"),this.$emit("toogle",!1),this.$emit("can-install",!1),!0;console.info("You choose to not install PWA"),this.$emit("toogle",!1),this.$emit("can-install",!1)}return!1},hint(){console.info("You accepted the install hint"),this.$emit("hint")}}}),vn=(n(170),Object(qt.a)(mn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"install-modal-wrapper"}},[n("div",{staticClass:"background",on:{click:function(t){return e.$emit("toogle",!1)}}}),e._v(" "),n("div",{staticClass:"install-modal"},[n("div",{staticClass:"header"},[n("button",{staticClass:"close-button",attrs:{"aria-label":e.i18n.close},on:{click:function(t){return e.$emit("toogle",!1)}}},[n("CloseIcon")],1),e._v(" "),n("div",{staticClass:"logo"},[e.manifest.icons?n("img",{attrs:{src:e.manifest.icons[0].src,alt:"App Logo"}}):e._e(),e._v(" "),n("div",{staticClass:"title"},[n("h1",[e._v(e._s(e.manifest.short_name||e.manifest.name))]),e._v(" "),n("p",{staticClass:"desc"},[e._v(e._s(e.i18n.explain))])])])]),e._v(" "),n("div",{staticClass:"content"},[n("div",{staticClass:"highlight"},[e.manifest.features?n("div",{staticClass:"feature-wrapper"},[n("h3",[e._v(e._s(e.i18n.feature))]),e._v(" "),e.manifest.features?n("ul",e._l(e.manifest.features,(function(t){return n("li",{key:t,domProps:{textContent:e._s(t)}})})),0):e._e()]):e._e(),e._v(" "),e.manifest.screenshots?n("div",{staticClass:"screenshot-wrapper"},[n("button",{attrs:{"aria-label":e.i18n.prevImage},on:{click:e.scrollToLeft}},[n("ArrowLeftIcon")],1),e._v(" "),n("section",{staticClass:"screenshot"},e._l(e.manifest.screenshots,(function(e){return n("div",{key:e.src},[n("img",{attrs:{alt:"App Screenshot",src:e.src}})])})),0),e._v(" "),n("button",{attrs:{"aria-label":e.i18n.nextImage},on:{click:e.scrollToRight}},[n("ArrowRightIcon")],1)]):e._e()]),e._v(" "),n("div",{staticClass:"description"},[n("h3",{domProps:{textContent:e._s(e.i18n.desc)}}),e._v(" "),n("p",{domProps:{textContent:e._s(e.manifest.description)}})])]),e._v(" "),e.useHint?n("div",{staticClass:"ios-text",on:{click:e.hint}},[n("p",[e._v(e._s(e.i18n.iOSInstall))]),e._v(" "),n("button",{staticClass:"success"},[e._v("Got it!")])]):n("div",{staticClass:"button-wrapper"},[n("button",{staticClass:"install-button",on:{click:e.install}},[e._v("\n "+e._s(e.i18n.install)+" "),n("span",[e._v(e._s(e.manifest.short_name))])]),e._v(" "),n("button",{staticClass:"cancel-button",on:{click:function(t){return e.$emit("toogle",!1)}}},[e._v("\n "+e._s(e.i18n.cancel)+"\n ")])])])])}),[],!1,null,null,null).exports),gn=r.a.extend({name:"PWAInstall",components:{PWAInstallModal:vn},data:()=>({canInstall:!1,hasRelatedApps:!1,isOpen:!1,isIOS:!1,isSafari:!1,hinted:!1}),computed:{install(){return dn[this.$localePath||"/"].install},useHint(){return this.isIOS&&this.isSafari&&!1===this.hinted},showInstall(){return this.hasRelatedApps&&this.canInstall||this.useHint}},mounted(){if(this.getInstalledStatus()){const{userAgent:e}=navigator;this.isIOS=e.includes("iPhone")||e.includes("iPad")||Boolean(e.includes("Macintosh")&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2),this.isSafari=navigator.userAgent.includes("Safari")&&!e.includes("Chrome"),this.hinted=Boolean(localStorage.getItem("iOS-pwa-hint"))}"getInstalledRelatedApps"in navigator&&navigator.getInstalledRelatedApps().then(e=>{this.hasRelatedApps=e.length>0})},methods:{getInstalledStatus:()=>navigator.standalone?navigator.standalone:matchMedia("(display-mode: standalone)").matches,hint(){this.isOpen=!1,this.hinted=!0,localStorage.setItem("iOS-pwa-hint","hinted")}}}),yn=(n(171),Object(qt.a)(gn,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"pwa-install"}},[e.showInstall?n("button",{staticClass:"modal-button",attrs:{"use-hint":e.useHint},domProps:{textContent:e._s(e.install)},on:{click:function(t){e.isOpen=!0}}}):e._e(),e._v(" "),n("PWAInstallModal",{directives:[{name:"show",rawName:"v-show",value:e.isOpen,expression:"isOpen"}],on:{"can-install":function(t){e.canInstall=t},hint:e.hint,toogle:function(t){e.isOpen=t}}})],1)}),[],!1,null,null,null).exports);const bn=new r.a;var _n=r.a.extend({name:"SWUpdatePopup",data:()=>({updateEvent:null}),computed:{enabled(){return Boolean(this.updateEvent)},message(){return dn[this.$localePath||"/"].update}},created(){bn.$on("sw-updated",this.onSWUpdated.bind(this))},methods:{onSWUpdated(e){this.updateEvent=e},reload(){this.updateEvent&&this.updateEvent.skipWaiting().then(()=>{location.reload(),this.updateEvent=null})}}}),wn=(n(172),Object(qt.a)(_n,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"sw-update-popup"}},[e._t("default",[e.enabled?n("div",{staticClass:"sw-update-popup",attrs:{role:"button",tabindex:"0"},on:{click:e.reload}},[e._v("\n "+e._s(e.message)+"\n "),n("span",{staticClass:"refresh"},[n("svg",{attrs:{viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"84",height:"84"}},[n("path",{attrs:{d:"M949.948959 146.249899l0 255.82655c0 21.980617-13.988596 35.969213-35.969213 35.969213l-255.82655\n 0c-13.988596 0-25.982768-7.992021-33.972742-21.980617-5.997598-13.988596-4.001127-27.977191\n 7.990998-39.97034l79.941704-77.945233c-55.954383-51.973722-121.917724-77.955466-199.862957-77.955466-37.974893 0-75.949786 8.002254-113.924679 21.99085-37.974893 15.984043-67.947532 37.974893-91.933829\n 63.956637-25.981744 23.986297-47.972595 53.958936-63.956637 91.933829-29.982872 73.954339-29.982872\n 153.895019 0 227.849358 15.984043 37.975916 37.974893 67.947532 63.956637 91.933829 23.986297 25.982768\n 53.958936 47.973618 91.933829 63.956637 37.974893 13.988596 75.949786 21.99085 113.924679 21.99085\n 45.966914 0 87.941911-9.997702 127.913275-29.981848 41.97602-17.989723 75.950809-45.966914\n 101.930507-83.942831 7.993045-4.001127 11.994172-5.995551 13.988596-5.995551 5.997598 0 9.998725\n 1.994424 13.988596 5.995551l77.957513 77.945233c3.988848 4.001127 5.986341 7.993045 5.986341\n 11.994172 0 1.994424-1.99647 5.995551-3.990894 11.994172-43.972491 51.962465-93.940532\n 91.933829-151.898549 117.91455-53.958936 25.982768-115.921149 39.971363-185.874361\n 39.971363-61.96119 0-119.921253-11.983939-169.889295-33.972742C284.40084 889.74325 236.438479\n 857.764931 202.464713\n 821.785485c-35.979446-33.972742-67.957765-81.936127-93.939509-139.897214-45.966914-101.930507-45.966914-237.846036 0-339.777567 25.981744-57.960063 57.960063-105.922425 93.939509-139.89619\n 33.973766-35.979446 81.936127-67.957765 139.89619-93.939509 49.968042-21.99085\n 107.928105-33.973766 169.889295-33.973766 55.963593 0 109.923552 9.987468 161.886017\n 29.972639 53.969169 21.99085 101.932554 51.963489 139.907447 89.938382l73.954339-73.944106c9.987468-9.997702 23.987321-13.988596 39.971363-8.002254C941.956937 120.268154 949.948959 132.261303\n 949.948959 146.249899z"}})])])]):e._e()],{reload:e.reload,enabled:e.enabled,message:e.message})],2)}),[],!1,null,null,null).exports);var xn=async({Vue:e,router:t,isServer:r})=>{if(e.component("PWAInstall",yn),e.component("SWUpdatePopup",wn),!r){const{register:e}=await n.e(43).then(n.bind(null,476));t.onReady(()=>{e("/docs/service-worker.js",{registrationOptions:{},ready(){console.log("[PWA]: Service worker is active"),bn.$emit("sw-ready")},cached(e){console.log("[PWA]: Content has been cached for offline usage"),bn.$emit("sw-cached",new cn(e))},updated(e){console.log("[PWA]: Content has been updated");const t="service-worker-version",n=Number(localStorage.getItem(t)||0);localStorage.setItem(t,(n+1).toString()),localStorage.removeItem("manifest"),bn.$emit("sw-updated",new cn(e))},offline(){console.log("[PWA]: No internet connection,APP runs in offline mode"),bn.$emit("sw-offline")},error(e){console.error("[PWA]: Register Service Worker error:",e),bn.$emit("sw-error",e)}})})}};n(173);const Cn=e=>{const t=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{x:n.left-t.left,y:n.top-t.top}};var kn=({Vue:e,router:t})=>{t.options.scrollBehavior=(t,n,r)=>{r?window.scrollTo({top:r.y,behavior:"smooth"}):t.hash?e.$vuepress.$get("disableScrollBehavior")||setTimeout(()=>{const e=decodeURI(t.hash.slice(1)),n=document.getElementById(e)||document.querySelector(`[name='${e}']`);n&&window.scrollTo({top:Cn(n).y,behavior:"smooth"})},0):window.scrollTo({top:0,behavior:"smooth"})}},Sn={tag:{},category:{}};class Tn{constructor(e,t){this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach(e=>{const{pageKeys:n}=this._metaMap[e];this._metaMap[e].pages=n.map(e=>function(e,t){for(let n=0;n{const{pages:n,path:r}=this._metaMap[t];e.push({name:t,pages:n,path:r})}),e}getItemByName(e){return this._metaMap[e]}}var On=n(62);const $n=n.n(On)()("plugin-blog:pagination");class jn{constructor(e,t,n){$n("pagination",e);const{pages:r,prevText:o,nextText:i}=e,{path:a}=n;this._prevText=o,this._nextText=i;for(let e=0,t=r.length;ee.filter(t,e.id,e.pid)).sort(e.sorter)}setIndexPage(e){this._indexPage=e}get length(){return this._paginationPages.length}get pages(){const[e,t]=this._currentPage.interval;return this._matchedPages.slice(e,t+1)}get hasPrev(){return 0!==this.paginationIndex}get prevLink(){return this.hasPrev?this.paginationIndex-1==0&&this._indexPage?this._indexPage:this._paginationPages[this.paginationIndex-1].path:null}get hasNext(){return this.paginationIndex!==this.length-1}get nextLink(){return this.hasNext?this._paginationPages[this.paginationIndex+1].path:null}get prevText(){return this._prevText}get nextText(){return this._nextText}getSpecificPageLink(e){return this._paginationPages[e].path}}const An=new class{constructor(e){this.paginations=e}get pages(){return r.a.$vuepress.$get("siteData").pages}getPagination(e,t,n){$n("id",t),$n("pid",e);const r=this.paginations.filter(n=>n.id===t&&n.pid===e)[0];return new jn(r,this.pages,n)}}([]);var En={comment:{enabled:!1,service:""},email:{enabled:!1},feed:{rss:!1,atom:!1,json:!1}};n(176),n(16),n(177);var Pn=({Vue:e})=>{Promise.all([n.e(0),n.e(39)]).then(n.t.bind(null,477,7)),Promise.all([n.e(0),n.e(40)]).then(n.t.bind(null,478,7)),Promise.all([n.e(0),n.e(41)]).then(n.t.bind(null,479,7)),Promise.all([n.e(0),n.e(42)]).then(n.t.bind(null,480,7))};let Hn;const In={"/zh/":{close:"关闭",fullsreen:"切换全屏",share:"分享",zoom:"缩放",prev:"上一个 (左箭头)",next:"下一个 (右箭头)",buttons:[{id:"qq",label:"分享到 QQ",url:"https://connect.qq.com/widget/shareqq/iframe_index.html?url={{url}}&title={{text}}&pics={{image_url}}"},{id:"qzone",label:"分享到 Qzone",url:"https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{url}}&title={{text}}&pics={{image_url}}"},{id:"weibo",label:"分享到 Weibo",url:"http://service.weibo.com/share/share.php?url={{url}}&title={{text}}&content=utf8&pic={{image_url}}"},{id:"download",label:"下载图片",url:"{{raw_image_url}}",download:!0}]},"/en/":{close:"Close",fullsreen:"Switch to full screen",share:"Share",zoom:"Zoom in/out",prev:"Prev (Arrow Left)",next:"Next (Arrow Right)",buttons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}]},"/de/":{close:"Schließen",fullsreen:"Toggle fullscreen",share:"Teilen",zoom:"Rein / rauszoomen",prev:"Zurück (Pfeil links)",next:"Weiter (Pfeil rechts)",buttons:[{id:"facebook",label:"Teilen auf Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Bild herunterladen",url:"{{raw_image_url}}",download:!0}]},"/vi/":{close:"Đóng",fullsreen:"Bật chế độ toàn màn hình",share:"Chia sẻ",zoom:"Phóng to / thu nhỏ",prev:"Trước (Mũi tên trái)",next:"Tiếp theo (Mũi tên Phải)",buttons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}]},"/uk/":{close:"Закрити",fullsreen:"Перейти на повний екран",share:"Поділіться",zoom:"Збільшити/Зменшити",prev:"Попередня (Стрілка вліво)",next:"Далі (стрілка вправо)",buttons:[{id:"facebook",label:"Поділіться на Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"Завантажити",label:"Завантажити зображення",url:"{{raw_image_url}}",download:!0}]},"/ru/":{close:"Закрыть",fullsreen:"Переключиться на полный экран",share:"Поделиться",zoom:"Увеличить/Уменьшить",prev:"Предыдущая (Стрелка влево)",next:"Далее (стрелка вправо)",buttons:[{id:"facebook",label:"Поделиться на Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"Загрузить",label:"Загрузить изображение",url:"{{raw_image_url}}",download:!0}]},"/":{close:"Close",fullsreen:"Switch to full screen",share:"Share",zoom:"Zoom in/out",prev:"Prev (Arrow Left)",next:"Next (Arrow Right)",buttons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}]}};var Ln=r.a.extend({name:"PhotoSwipeUI",data:()=>({i18n:In}),watch:{$route(){const e=setInterval(()=>{document.querySelector(".theme-default-content")&&(this.photoswipe(),clearInterval(e))},200)}},mounted(){const e=setInterval(()=>{document.querySelector(".theme-default-content")&&(this.photoswipe(),clearInterval(e))},200)},methods:{photoswipe(){const e=document.querySelector(".pswp");Promise.all([n.e(38).then(n.t.bind(null,481,7)),n.e(38).then(n.t.bind(null,482,7))]).then(([t,n])=>{this.getImages().then(r=>{Hn.forEach((o,i)=>{o.onclick=()=>{new t.default(e,n.default,r,Object.assign(Object.assign({shareButtons:In[this.$localePath||"/"].buttons},{}),{index:i})).init()}})})})},getImageInfo:e=>({src:e.src,w:e.naturalWidth,h:e.naturalHeight,title:e.alt}),getImages(){const e=[];return Hn=document.querySelectorAll(".theme-default-content :not(a) > img"),Hn.forEach((t,n)=>{e[n]=new Promise((e,n)=>{t.complete?e(this.getImageInfo(t)):(t.onload=()=>e(this.getImageInfo(t)),t.onerror=e=>n(e))})}),Promise.all(e)}}}),Mn=(n(178),Object(qt.a)(Ln,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"pswp",attrs:{tabindex:"-1",role:"dialog","aria-hidden":"true"}},[n("div",{staticClass:"pswp__bg"}),e._v(" "),n("div",{staticClass:"pswp__scroll-wrap"},[e._m(0),e._v(" "),n("div",{staticClass:"pswp__ui pswp__ui--hidden"},[n("div",{staticClass:"pswp__top-bar"},[n("div",{staticClass:"pswp__counter"}),e._v(" "),n("button",{staticClass:"pswp__button pswp__button--close",attrs:{title:e.i18n.close,"aria-label":e.i18n.close}}),e._v(" "),n("button",{staticClass:"pswp__button pswp__button--share",attrs:{title:e.i18n.share,"aria-label":e.i18n.share}}),e._v(" "),n("button",{staticClass:"pswp__button pswp__button--fs",attrs:{title:e.i18n.fullscreen,"aria-label":e.i18n.fullscreen}}),e._v(" "),n("button",{staticClass:"pswp__button pswp__button--zoom",attrs:{title:e.i18n.zoom,"aria-label":e.i18n.zoom}}),e._v(" "),e._m(1)]),e._v(" "),e._m(2),e._v(" "),n("button",{staticClass:"pswp__button pswp__button--arrow--left",attrs:{title:e.i18n.prev,"aria-label":e.i18n.prev}}),e._v(" "),n("button",{staticClass:"pswp__button pswp__button--arrow--right",attrs:{title:e.i18n.next,"aria-label":e.i18n.next}}),e._v(" "),e._m(3)])])])}),[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"pswp__container"},[t("div",{staticClass:"pswp__item"}),this._v(" "),t("div",{staticClass:"pswp__item"}),this._v(" "),t("div",{staticClass:"pswp__item"})])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"pswp__preloader"},[t("div",{staticClass:"pswp__preloader__icn"},[t("div",{staticClass:"pswp__preloader__cut"},[t("div",{staticClass:"pswp__preloader__donut"})])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"pswp__share-modal pswp__share-modal--hidden pswp__single-tap"},[t("div",{staticClass:"pswp__share-tooltip"})])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"pswp__caption"},[t("div",{staticClass:"pswp__caption__center"})])}],!1,null,null,null).exports);var Fn=({Vue:e})=>{e.component("PhotoSwipeUI",Mn)};n(179);function Rn(e){const t=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{x:n.left-t.left,y:n.top-t.top}}var qn=[{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},sn,xn,kn,({Vue:e})=>{const t=Object.keys(Sn).map(e=>{const t=Sn[e],n="$"+e;return{[n](){const{pages:e}=this.$site;return new Tn(t,e)},["$current"+(e.charAt(0).toUpperCase()+e.slice(1))](){const e=this.$route.meta.id;return this[n].getItemByName(e)}}}).reduce((e,t)=>(Object.assign(e,t),e),{});t.$frontmatterKey=function(){const e=this["$"+this.$route.meta.id];return e||null},e.mixin({computed:t})},({Vue:e})=>{e.mixin({computed:{$pagination(){return this.$route.meta.pid&&this.$route.meta.id?this.$getPagination(this.$route.meta.pid,this.$route.meta.id):null}},methods:{$getPagination(e,t){return t=t||e,An.getPagination(e,t,this.$route)}}})},({Vue:e})=>{const t={$service:()=>En};e.mixin({computed:t})},{},Pn,Fn,({Vue:e,router:t})=>{t.options.scrollBehavior=(t,n,r)=>{if(r)return window.scrollTo({top:r.y,behavior:"smooth"});if(t.hash){if(e.$vuepress.$get("disableScrollBehavior"))return!1;const n=document.querySelector(t.hash);return!!n&&window.scrollTo({top:Rn(n).y,behavior:"smooth"})}return window.scrollTo({top:0,behavior:"smooth"})}}],Dn=["BackToTop","SWUpdatePopup","PWAInstall","PhotoSwipeUI"];class Bn extends class{constructor(){this.store=new r.a({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){r.a.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Bn.prototype,{getPageAsyncComponent:ct,getLayoutAsyncComponent:lt,getAsyncComponent:ut,getVueComponent:pt});var Nn={install(e){const t=new Bn;e.$vuepress=t,e.prototype.$vuepress=t}};function Jn(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var Un={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return ft("pageKey",t),r.a.component(t)||r.a.component(t,ct(t)),r.a.component(t)?e(t):e("")}},zn={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},Vn={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Wn=(n(180),n(181),Object(qt.a)(Vn,(function(){var e=this.$createElement,t=this._self._c||e;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),t("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Zn={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(We),r.a.use(Nn),r.a.mixin(function(e,t,n=r.a){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const o=new(e(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((e,t)=>(t.startsWith("$")&&(e[t]=i[t].get),e),a),{computed:a}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(Jn(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";Jn(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";Jn(e,o)?r(o):Jn(e,n)?r(n):r()}})}(n);const o={};try{await Promise.all(qn.filter(e=>"function"==typeof e).map(t=>t({Vue:r.a,options:o,router:n,siteData:Nt,isServer:e})))}catch(e){console.error(e)}return{app:new r.a(Object.assign(o,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},Dn.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/layout-Blog.727f4b41.js b/docs/docs/.vuepress/dist/assets/js/layout-Blog.727f4b41.js deleted file mode 100644 index 0bcc4ed4..00000000 --- a/docs/docs/.vuepress/dist/assets/js/layout-Blog.727f4b41.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4,5],{217:function(t,e){},218:function(t,e){},226:function(t,e){},228:function(t,e){},239:function(t,e,n){"use strict";n.d(e,"a",(function(){return o}));var s=n(214),i=n(237),a=n(213);const o=i.a.extend({data:()=>({encryptPasswordConfig:{}}),computed:{pathEncryptMatchKeys(){return Object(a.a)(this.encryptOptions,this.$route.path)},isPathEncrypted(){if(0===this.pathEncryptMatchKeys.length)return!1;const{config:t}=this.encryptOptions;return this.pathEncryptMatchKeys.every(e=>{const n=t[e],i="string"==typeof n?[n]:n;return!this.encryptPasswordConfig[e]||i.every(t=>!Object(s.compareSync)(this.encryptPasswordConfig[e],t))})}},mounted(){const t=localStorage.getItem("encryptConfig");t&&(this.encryptPasswordConfig=JSON.parse(t))},methods:{checkPathPassword(t){const{config:e}=this.$themeConfig.encrypt;for(const n of this.pathEncryptMatchKeys){const i=e[n];if(("string"==typeof i?[i]:i).filter(e=>Object(s.compareSync)(t,e))){this.$set(this.encryptPasswordConfig,n,t),localStorage.setItem("encryptConfig",JSON.stringify(this.encryptPasswordConfig));break}}}}})},322:function(t,e,n){},323:function(t,e,n){},324:function(t,e,n){},463:function(t,e,n){"use strict";n(322)},464:function(t,e,n){"use strict";n(323)},465:function(t,e,n){"use strict";n(324)},484:function(t,e,n){"use strict";n.r(e);var s=n(207),i=n(0),a=n(241),o=n(186),r=n(198),c=i.a.extend({name:"ArticleType",computed:{types(){const t=this.$themeLocaleConfig.blog||Object(o.b)().blog;return[{text:t.allText,path:"/article/"},{text:t.star,path:"/star/"},{text:t.slides,path:"/slide/"},{text:t.encrypt,path:"/encrypt/"}]}},methods:{navigate(t){Object(r.a)(t,this.$router,this.$route)}}}),l=(n(463),n(1)),p=Object(l.a)(c,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ul",{staticClass:"article-type-wrapper"},t._l(t.types,(function(e){return n("li",{key:e.text,staticClass:"article-type",class:{active:e.path===t.$route.path},attrs:{role:"navigation"},on:{click:function(n){return t.navigate(e.path)}}},[n("span",[t._v(t._s(e.text))])])})),0)}),[],!1,null,null,null).exports,h=n(337),u=n(189),y=n(338),f=n(339),g=n(340),d=i.a.extend({name:"BlogPage",components:{ArticleList:a.a,ArticleType:p,BlogInfo:s.a,CategoryList:h.a,MyTransition:u.a,TagList:y.a,Timeline:f.a,TimelineList:g.a},computed:{showArticles(){const{path:t}=this.$route;return!t.includes("/timeline")},componentName(){const t=this.$route.path.split("/")[1];return["category","tag"].includes(t)?t+"List":"timeline"===t?t:"articleType"}}}),m=(n(464),Object(l.a)(d,(function(){var t=this.$createElement,e=this._self._c||t;return e("main",{staticClass:"blog-page"},[e("MyTransition",[this.componentName?e(this.componentName,{tag:"component"}):this._e()],1),this._v(" "),e("MyTransition",{attrs:{delay:.24}},[this.showArticles?e("ArticleList",{key:this.$route.path}):this._e()],1)],1)}),[],!1,null,null,null).exports),w=n(240),b=n(244),P=n(239),v=n(242),C=b.a.extend(P.a).extend({components:{BlogInfo:s.a,BlogPage:m,Common:w.a,MyTransition:u.a,Password:v.a}}),x=(n(465),Object(l.a)(C,(function(){var t=this.$createElement,e=this._self._c||t;return e("Common",{attrs:{sidebar:!1},scopedSlots:this._u([{key:"sidebar-bottom",fn:function(){return[e("BlogInfo")]},proxy:!0}])},[this._v(" "),this.isGlobalEncrypted?e("Password",{on:{"password-verify":this.checkGlobalPassword}}):this.isPathEncrypted?e("Password",{on:{"password-verify":this.checkPathPassword}}):e("main",{staticClass:"page blog"},[e("div",{staticClass:"blog-page-wrapper"},[e("BlogPage"),this._v(" "),e("MyTransition",{attrs:{delay:.16}},[e("BlogInfo")],1)],1)])],1)}),[],!1,null,null,null));e.default=x.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/layout-Layout.f99637d0.js b/docs/docs/.vuepress/dist/assets/js/layout-Layout.f99637d0.js deleted file mode 100644 index c4f5161c..00000000 --- a/docs/docs/.vuepress/dist/assets/js/layout-Layout.f99637d0.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{217:function(n,o){},218:function(n,o){},226:function(n,o){},228:function(n,o){}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/layout-NotFound.94a1312e.js b/docs/docs/.vuepress/dist/assets/js/layout-NotFound.94a1312e.js deleted file mode 100644 index 30ebb2f0..00000000 --- a/docs/docs/.vuepress/dist/assets/js/layout-NotFound.94a1312e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6,5],{217:function(t,a){},218:function(t,a){},226:function(t,a){},228:function(t,a){},320:function(t,a,o){},321:function(t,a,o){},461:function(t,a,o){"use strict";o(320)},462:function(t,a,o){"use strict";o(321)},485:function(t,a,o){"use strict";o.r(a);var s=o(0),r=o(240),n=(o(461),o(1)),l=Object(n.a)({},(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("svg",{staticClass:"page-404-icon",attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 178 130"}},[o("defs",[o("linearGradient",{attrs:{id:"b",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#e9e9e9"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"c",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#dcdcdc"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"d",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#f1f1f1"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"e",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#dedede"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"f",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#e8e8e8"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"g",x1:".213",y1:"1.265",x2:".846",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#fff"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#f5f5f5"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"h",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#c5c5c5"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1),t._v(" "),o("linearGradient",{attrs:{id:"i",x1:".5",x2:".5",y2:"1",gradientUnits:"objectBoundingBox"}},[o("stop",{attrs:{offset:"0","stop-color":"#acacac"}}),t._v(" "),o("stop",{attrs:{offset:"1","stop-color":"#f2f2f2","stop-opacity":".388"}})],1),t._v(" "),o("clipPath",{attrs:{id:"a"}},[o("path",{attrs:{transform:"translate(744 1111)",fill:"none",d:"M0 0h178v130H0z"}})])],1),t._v(" "),o("g",{attrs:{transform:"translate(-744 -1111)","clip-path":"url(#a)"}},[o("g",[o("path",{attrs:{d:"M0 10.795 36.6 0v93.779L0 104.574z",transform:"translate(772.466 1122.142)",fill:"url(#b)"}}),t._v(" "),o("path",{attrs:{d:"M-8.492 10.642-26.361-.469v93.78l17.868 11.111z",transform:"translate(780.958 1122.293)",fill:"url(#c)"}}),t._v(" "),o("path",{attrs:{d:"M-8.5 5.55 28.106-5.3 10.228-16.437l-36.6 10.845z",transform:"translate(780.963 1127.438)",fill:"url(#d)"}}),t._v(" "),o("path",{attrs:{d:"M0 10.539 35.741 0v91.56L0 102.1z",transform:"translate(870.158 1123.617)",fill:"url(#d)"}}),t._v(" "),o("path",{attrs:{d:"M-8.913 10.38-26.361-.469v91.562l17.448 10.848z",transform:"translate(879.071 1123.775)",fill:"url(#e)"}}),t._v(" "),o("path",{attrs:{d:"m-8.918 5.032 35.741-10.59L9.366-16.437-26.375-5.848z",transform:"translate(879.076 1129.175)",fill:"url(#d)"}}),t._v(" "),o("path",{attrs:{d:"M0 9.137 30.839 0v79.381L0 88.519z",transform:"translate(799.678 1151.579)",fill:"url(#f)"}}),t._v(" "),o("path",{attrs:{d:"m-11.306 8.936-15.054-9.4v79.377l15.054 9.4z",transform:"translate(810.985 1151.78)",fill:"url(#c)"}}),t._v(" "),o("path",{attrs:{d:"M-11.313 2.087 19.526-7.05 4.464-16.437-26.375-7.3z",transform:"translate(810.991 1158.63)",fill:"url(#g)"}}),t._v(" "),o("path",{attrs:{d:"M178 53H0a51.361 51.361 0 0 1 10.453-20.952 74.532 74.532 0 0 1 19.742-16.811A103.3 103.3 0 0 1 57.089 4.058a127.515 127.515 0 0 1 63.823 0 103.3 103.3 0 0 1 26.894 11.179 74.532 74.532 0 0 1 19.741 16.811A51.363 51.363 0 0 1 178 53z",transform:"translate(744 1187.549)",fill:"url(#h)"}}),t._v(" "),o("path",{attrs:{d:"m814.529 1199.586-1.272 1.212h2.3l1.2-1.212z",fill:"#cbcbcb"}}),t._v(" "),o("path",{attrs:{d:"m816.725 1194.909-1.272 1.212h2.3l1.263-1.212z",fill:"#cbcbcb"}}),t._v(" "),o("path",{attrs:{d:"m863.284 1199.585-1.272 1.212h2.3l1.2-1.212z",fill:"#cbcbcb"}}),t._v(" "),o("path",{attrs:{d:"m865.519 1194.9-1.272 1.212h2.3l1.263-1.212z",fill:"#cbcbcb"}}),t._v(" "),o("path",{attrs:{d:"m799.527 1191.21 10.182-21.97h4.381l-9.931 21.719h14.876v3.941h-19.508zm13.081-9.493h4.152v17.859h-4.152zm20.728 18.151q-4.256 0-6.457-2.274a8.74 8.74 0 0 1-2.2-6.343v-13.791a8.708 8.708 0 0 1 2.21-6.353q2.212-2.264 6.447-2.264 4.256 0 6.457 2.253a8.726 8.726 0 0 1 2.2 6.363v13.792a8.708 8.708 0 0 1-2.21 6.349q-2.211 2.268-6.447 2.268zm0-4.048a4.29 4.29 0 0 0 3.328-1.178 4.862 4.862 0 0 0 1.074-3.39v-13.792a4.893 4.893 0 0 0-1.064-3.39 4.285 4.285 0 0 0-3.338-1.179 4.285 4.285 0 0 0-3.338 1.179 4.893 4.893 0 0 0-1.064 3.39v13.791a4.862 4.862 0 0 0 1.075 3.391 4.29 4.29 0 0 0 3.327 1.178zm14.928-4.61 10.181-21.97h4.381l-9.931 21.719h14.876v3.941h-19.507zm13.081-9.493h4.152v17.859h-4.152z",fill:"#c6c6c6"}}),t._v(" "),o("path",{attrs:{d:"m798.306 1192.431 10.182-21.97h4.381l-9.931 21.719h14.876v3.941h-19.508zm13.081-9.493h4.152v17.859h-4.152zm20.728 18.151q-4.256 0-6.457-2.274a8.74 8.74 0 0 1-2.2-6.343v-13.791a8.708 8.708 0 0 1 2.21-6.353q2.212-2.264 6.447-2.264 4.256 0 6.457 2.253a8.726 8.726 0 0 1 2.2 6.363v13.792a8.708 8.708 0 0 1-2.21 6.349q-2.211 2.268-6.447 2.268zm0-4.048a4.29 4.29 0 0 0 3.328-1.178 4.862 4.862 0 0 0 1.074-3.39v-13.792a4.893 4.893 0 0 0-1.064-3.39 4.285 4.285 0 0 0-3.338-1.179 4.285 4.285 0 0 0-3.338 1.179 4.893 4.893 0 0 0-1.064 3.39v13.791a4.862 4.862 0 0 0 1.075 3.391 4.29 4.29 0 0 0 3.327 1.178zm14.928-4.61 10.181-21.97h4.381l-9.931 21.719h14.876v3.941h-19.507zm13.081-9.493h4.152v17.859h-4.152z",fill:"#b2b2b2"}}),t._v(" "),o("path",{attrs:{d:"m-27.694-19.435 10.182 14.517h4.381l-9.931-14.352h14.876v-2.606h-19.508zm13.081 6.273h4.152v-11.8h-4.152zM6.115-25.156q-4.256 0-6.457 1.5a4.8 4.8 0 0 0-2.2 4.191v9.113a4.784 4.784 0 0 0 2.212 4.2 11.511 11.511 0 0 0 6.447 1.5q4.256 0 6.457-1.489a4.786 4.786 0 0 0 2.2-4.2v-9.113a4.784 4.784 0 0 0-2.212-4.2 11.511 11.511 0 0 0-6.447-1.502zm0 2.675a5.705 5.705 0 0 1 3.328.779 2.6 2.6 0 0 1 1.074 2.24v9.113a2.607 2.607 0 0 1-1.064 2.24 5.7 5.7 0 0 1-3.338.779 5.7 5.7 0 0 1-3.338-.779 2.607 2.607 0 0 1-1.064-2.24v-9.113A2.6 2.6 0 0 1 2.788-21.7a5.705 5.705 0 0 1 3.327-.782zm14.927 3.047L31.224-4.918h4.381l-9.931-14.351H40.55v-2.606H21.043zm13.081 6.273h4.152v-11.8h-4.151z",transform:"translate(826 1226.245)",opacity:".32",fill:"url(#i)"}}),t._v(" "),o("g",{attrs:{fill:"#e6e6e6"}},[o("path",{attrs:{d:"m858.428 1169.23-1.2 1.259h4.388l1.178-1.259z"}}),t._v(" "),o("path",{attrs:{d:"m802.944 1192.187 1.288-1.375h7.143v1.375zm8.415-9.25 1.273-1.234h4.15l-1.235 1.234zm-2.855-12.469 1.198-1.259h4.367l-1.178 1.259z"}}),t._v(" "),o("path",{attrs:{d:"m861.362 1181.678-1.27 1.3h4.188l1.236-1.3z"}}),t._v(" "),o("path",{attrs:{d:"m865.519 1190.9-1.27 1.3h2.3l1.162-1.3z"}}),t._v(" "),o("path",{attrs:{d:"m852.838 1190.791-1.207 1.508h8.447v-1.508z"}})])])])])}),[],!1,null,null,null).exports,e=o(186),i=s.a.extend({name:"NotFound",components:{Common:r.a,Page404Icon:l},computed:{i18n(){return this.$themeLocaleConfig.error404||Object(e.b)().error404},msg(){return this.i18n.hint[Math.floor(Math.random()*this.i18n.hint.length)]}},methods:{back(){window.history.go(-1)}}}),f=(o(462),Object(n.a)(i,(function(){var t=this,a=t.$createElement,o=t._self._c||a;return o("Common",{attrs:{sidebar:!1}},[o("main",{staticClass:"page not-found"},[o("Page404Icon"),t._v(" "),o("blockquote",{domProps:{textContent:t._s(t.msg)}}),t._v(" "),o("button",{staticClass:"action-button",on:{click:t.back}},[t._v(t._s(t.i18n.back))]),t._v(" "),o("RouterLink",{staticClass:"action-button",attrs:{to:"/"}},[t._v(t._s(t.i18n.home))])],1)])}),[],!1,null,null,null));a.default=f.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/layout-Slide.e8877174.js b/docs/docs/.vuepress/dist/assets/js/layout-Slide.e8877174.js deleted file mode 100644 index 98c47ab1..00000000 --- a/docs/docs/.vuepress/dist/assets/js/layout-Slide.e8877174.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{333:function(t,e,s){},475:function(t,e,s){"use strict";s(333)},486:function(t,e,s){"use strict";s.r(e);var o=s(0),i=s(290),n=s(335),a=o.a.extend({name:"Slide",components:{ThemeColor:n.a},directives:{"click-outside":i.a},data:()=>({showMenu:!1}),destroyed(){document.querySelector("html").classList.remove("reveal-full-page"),document.body.classList.remove("reveal-viewport"),document.body.style.removeProperty("--slide-width"),document.body.style.removeProperty("--slide-height")},methods:{toggle(){this.showMenu=!this.showMenu},back(){window.history.go(-1),this.showMenu=!1},home(){this.$router.push("/"),this.showMenu=!1},clickOutside(){this.showMenu=!1}}}),c=(s(475),s(1)),l=Object(c.a)(a,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"presentation"},[s("ThemeColor",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}]}),t._v(" "),s("Content",{key:t.$route.path,staticClass:"presentation-content"}),t._v(" "),s("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.clickOutside,expression:"clickOutside"}],staticClass:"menu",class:{active:t.showMenu}},[s("button",{staticClass:"menu-button",on:{click:t.toggle}},[s("span",{staticClass:"icon"})]),t._v(" "),s("button",{staticClass:"back-button",on:{click:t.back}},[s("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[s("path",{attrs:{d:"M1014.749 449.156v125.688H260.626l345.64 345.64-89.239 89.237L19.307 512l497.72-497.721 89.238 89.238-345.64 345.64h754.124z"}})])]),t._v(" "),s("button",{staticClass:"home-button",on:{click:t.home}},[s("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[s("path",{attrs:{d:"M780.106 420.978L506.994 147.866 233.882 420.978h.045v455.11H780.06v-455.11h.046zm90.977 90.976V876.09a91.022 91.022 0 01-91.023 91.022H233.927a91.022 91.022 0 01-91.022-91.022V511.954l-67.22 67.175-64.307-64.307 431.309-431.31c35.498-35.498 93.115-35.498 128.614 0l431.309 431.31-64.307 64.307L871.083 512z"}})])])])],1)}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-Home.834b8172.js b/docs/docs/.vuepress/dist/assets/js/page-Home.834b8172.js deleted file mode 100644 index a9cebf5c..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-Home.834b8172.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{487:function(r,t,e){"use strict";e.r(t);var s=e(1),n=Object(s.a)({},(function(){var r=this,t=r.$createElement,e=r._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[e("p",[e("a",{attrs:{href:"http://openjdk.java.net/",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/Java-1.8-informational",alt:"Java"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://spring.io/projects/spring-boot",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/Spring Boot-2.2.6.RELEASE-success",alt:"Spring Boot"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://spring.io/projects/spring-cloud-alibaba",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/Spring Cloud Alibaba-2.2.1.RELEASE-success",alt:"SpringCloud Alibaba"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://www.mysql.com/",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/MySQL-8.0.19-blue",alt:"MySQL"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://redis.io/",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/Redis-5.0.9-red",alt:"Redis"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://github.com/alibaba/nacos",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/Nacos-1.4.2-%23267DF7",alt:"Nacos"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://cn.vuejs.org/",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/Vue-2.6.11-success",alt:"Vue"}}),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://qm.qq.com/cgi-bin/qm/qr?k=WWGBZ5gfDiBZOcpNvM8xnZTfUq7BT4Rs&jump_from=webapi",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:"https://img.shields.io/badge/QQ Group-598587305-blue",alt:"QQ Group 598587305"}}),e("OutboundLink")],1)]),r._v(" "),e("p",[r._v("Hcode Online Judge (HOJ) : 基于前后端分离,分布式架构的在线测评平台(hoj),前端使用vue,后端主要使用springboot,redis,mysql,nacos等技术,"),e("strong",[r._v("支持HDU、POJ、Codeforces(包括GYM)的vjudge判题,同时适配手机端、电脑端浏览,拥有讨论区与站内消息系统,还有完善的比赛功能(打星队伍、关注队伍、外榜)。")])]),r._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/HimitZH/HOJ",target:"_blank",rel:"noopener noreferrer"}},[r._v("Github 仓库"),e("OutboundLink")],1),r._v(" "),e("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj",target:"_blank",rel:"noopener noreferrer"}},[r._v("Gitee 仓库"),e("OutboundLink")],1)]),r._v(" "),e("p",[r._v("欢迎star收藏本项目对开发者的支持,谢谢"),e("br"),r._v("\n有任何部署问题或项目bug请发issue或者加QQ群"),e("br"),r._v(" "),e("strong",[r._v("如果要对本项目进行商业化,请在页面底部的Powered by指向HOJ本仓库地址")])]),r._v(" "),e("p",[e("a",{attrs:{href:"https://hdoi.cn/",target:"_blank",rel:"noopener noreferrer"}},[r._v("HDOI Onlie Judge"),e("OutboundLink")],1)]),r._v(" "),e("h2",{attrs:{id:"联系我们"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#联系我们"}},[r._v("#")]),r._v(" 联系我们")]),r._v(" "),e("p",[r._v("QQ: "),e("a",{attrs:{href:"https://wpa.qq.com/msgrd?v=3&uin=372347736&site=qq&menu=yes",target:"_blank",rel:"noopener noreferrer"}},[r._v("372347736"),e("OutboundLink")],1),e("br"),r._v("\nHOJ交流群: 598587305")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-前言.73a6aa71.js b/docs/docs/.vuepress/dist/assets/js/page-前言.73a6aa71.js deleted file mode 100644 index f43f15b8..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-前言.73a6aa71.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{493:function(t,s,a){"use strict";a.r(s);var e=a(1),_=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"前言"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[t._v("#")]),t._v(" 前言")]),t._v(" "),a("h2",{attrs:{id:"一、什么是hoj"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、什么是hoj"}},[t._v("#")]),t._v(" 一、什么是HOJ?")]),t._v(" "),a("p",[t._v("HOJ,全称 Hcode Online Judge,是基于(springcloud+vue)前后端分离,分布式架构的在线测评系统。")]),t._v(" "),a("p",[a("a",{attrs:{href:"http://openjdk.java.net/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Java-1.8-informational",alt:"Java"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://spring.io/projects/spring-boot",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Spring Boot-2.2.6.RELEASE-success",alt:"Spring Boot"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://spring.io/projects/spring-cloud-alibaba",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Spring Cloud Alibaba-2.2.1.RELEASE-success",alt:"SpringCloud Alibaba"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://www.mysql.com/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/MySQL-8.0.19-blue",alt:"MySQL"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://redis.io/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Redis-5.0.9-red",alt:"Redis"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://github.com/alibaba/nacos",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Nacos-1.4.2-%23267DF7",alt:"Nacos"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://cn.vuejs.org/",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/Vue-2.6.11-success",alt:"Vue"}}),a("OutboundLink")],1),t._v(" "),a("a",{attrs:{href:"https://qm.qq.com/cgi-bin/qm/qr?k=WWGBZ5gfDiBZOcpNvM8xnZTfUq7BT4Rs&jump_from=webapi",target:"_blank",rel:"noopener noreferrer"}},[a("img",{attrs:{src:"https://img.shields.io/badge/QQ Group-598587305-blue",alt:"QQ Group 598587305"}}),a("OutboundLink")],1)]),t._v(" "),a("h2",{attrs:{id:"二、为什么要开发hoj"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、为什么要开发hoj"}},[t._v("#")]),t._v(" 二、为什么要开发HOJ?")]),t._v(" "),a("p",[t._v("因为这是Himit_ZH的毕业设计,同时也是个人志趣所在,目前HOJ从开始开发到现在快有一年了,凭着兴趣与职责一直在不断维护与更新新功能。")]),t._v(" "),a("h2",{attrs:{id:"三、hoj的特点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#三、hoj的特点"}},[t._v("#")]),t._v(" 三、HOJ的特点")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Tips")]),t._v(" "),a("ul",[a("li",[t._v("适应:支持手机端,响应式布局")]),t._v(" "),a("li",[t._v("设计:界面简约大方")]),t._v(" "),a("li",[t._v("安全:判题使用 cgroup 隔离用户程序,杜绝卡评测;网站权限控制完善")]),t._v(" "),a("li",[t._v("扩展:支持分布式判题")]),t._v(" "),a("li",[t._v("简单:高度集中网站配置")]),t._v(" "),a("li",[t._v("功能:\n"),a("ul",[a("li",[t._v("支持ACM、OI题目及比赛,比赛拥有外榜、打星队伍、关注队伍等功能")]),t._v(" "),a("li",[t._v("拥有讨论区、题目讨论、比赛讨论、同时拥有站内消息系统")]),t._v(" "),a("li",[t._v("支持testlib的SPJ")])])]),t._v(" "),a("li",[t._v("多样:支持自身题目数据评测,也支持其它知名OJ(HDU、Codeforces、POJ)题目的爬取与提交")])])]),t._v(" "),a("h2",{attrs:{id:"四、使用hoj的学校"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#四、使用hoj的学校"}},[t._v("#")]),t._v(" 四、使用HOJ的学校")]),t._v(" "),a("p",[t._v("主要是OI:首都师范大学附属中学...")]),t._v(" "),a("p",[t._v("主要是ACM:西南科技大学、长春理工大学、兰州大学...")]),t._v(" "),a("h2",{attrs:{id:"五、部分截图"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#五、部分截图"}},[t._v("#")]),t._v(" 五、部分截图")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),a("p",[a("strong",[t._v("以下截图页面均支持中英文国际化,点击底部的转换即可全网站转换,包括后台管理,同时浏览器会记住本次选择的语言")])])]),t._v(" "),a("blockquote",[a("p",[t._v("首页页面")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210609212151977.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"首页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("首页英文")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210609213403198.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),a("blockquote",[a("p",[t._v("站内消息系统")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/a1a83ff01be84406954537e2ab78d999.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"站内消息系统"}})]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/513e7e37f52f48518c2fa1bf14eeea99.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"站内消息系统"}})]),t._v(" "),a("blockquote",[a("p",[t._v("题目列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/de80b1573ea04195a45b65e0dc55a308.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"题目列表页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("题目详情页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/655a9886cf7d4683812c923b9ce2aa2e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"题目详情页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/2021060921255349.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"比赛列表页"}})]),t._v(" "),a("p",[a("strong",[t._v("比赛以西南科技大学某届新生赛截图为例")])]),t._v(" "),a("blockquote",[a("p",[t._v("比赛详情首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/50026bde6dd64cd5929b38f8ecc6e72e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"比赛详情页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛题目列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/8646fc212b5c47e9b35e60634cfc8d6a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"比赛题目列表"}})]),t._v(" "),a("blockquote",[a("p",[t._v("比赛排行榜")])]),t._v(" "),a("ul",[a("li",[t._v("ACM比赛")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/c50140e3b73d482d82ca6f13f47aa080.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center",alt:"比赛排行榜"}})]),t._v(" "),a("ul",[a("li",[a("p",[t._v("OI比赛")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/67f6262854bb44efa70c374f1f156166.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center",alt:"oi排行榜"}})])])]),t._v(" "),a("blockquote",[a("p",[t._v("提交列表页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210609213021223.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),a("blockquote",[a("p",[t._v("排行榜")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/407ad16361f34b44a282b07af68825e0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"排行榜"}})]),t._v(" "),a("blockquote",[a("p",[t._v("公共讨论区")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513134216723.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"公共讨论区"}})]),t._v(" "),a("blockquote",[a("p",[t._v("评论组件")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210513142826730.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70#pic_center",alt:"评论组件"}})]),t._v(" "),a("blockquote",[a("p",[t._v("个人首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/3f9111cc0767466991ae3d99602b5865.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"个人首页"}})]),t._v(" "),a("blockquote",[a("p",[t._v("个人设置页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/971566eeac674d388b9f5d6064286e14.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"个人设置"}})]),t._v(" "),a("blockquote",[a("p",[t._v("管理后台首页")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/9b9674c0f30a441bb200a32756f24d2c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"管理后端"}})]),t._v(" "),a("blockquote",[a("p",[t._v("部分手机端显示")])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/c7b3648217af4899bedf7f7d804968ba.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_12,color_FFFFFF,t_70,g_se,x_16",alt:"手机端"}})]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210509233845230.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"评论区"}})])])}),[],!1,null,null,null);s.default=_.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署①——MySQL部署.2225e3d6.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署①——MySQL部署.2225e3d6.js deleted file mode 100644 index 4e651c44..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署①——MySQL部署.2225e3d6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{508:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署1-mysql部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署1-mysql部署"}},[s._v("#")]),s._v(" 单体部署①——MySQL部署")]),s._v(" "),t("p",[s._v("首先 先下载"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj-deploy/tree/master",target:"_blank",rel:"noopener noreferrer"}},[s._v("hoj-deploy"),t("OutboundLink")],1)]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/mysql\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-mysql")]),s._v("镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-mysql "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker run启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d --name hoj-mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/data/mysql/data:/var/lib/mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"hoj123456"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TZ")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Asia/Shanghai"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3306")]),s._v(":3306 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-mysql\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])]),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("version: "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\nservices:\n hoj-mysql:\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database")]),s._v("\n image: hoj-mysql\n container_name: hoj-mysql\n restart: always\n volumes:\n - ./hoj/data/mysql/data:/var/lib/mysql\n environment:\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# root账号的密码")]),s._v("\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("TZ")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("Asia/Shanghai\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 需要初始化nacos数据库的管理员账号")]),s._v("\n - "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos管理员账号的密码")]),s._v("\n ports:\n - "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3306:3306"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果有自定义网络可以类似添加如下")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# networks:")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-network:")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# ipv4_address: 172.20.0.3")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br")])]),t("h2",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-bcrypt"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-bcrypt"}},[s._v("#")]),s._v(" 1. bcrypt")]),s._v(" "),t("p",[s._v("此文件为go打包的可执行文件,作用是生成经过bcrypt加密的对应"),t("strong",[s._v("nacos管理员账号的密码")]),s._v(",然后生成对应的插入sql语句,代码内容如下:")]),s._v(" "),t("div",{staticClass:"language-go line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-go"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("package")]),s._v(" main\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"flag"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"fmt"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"golang.org/x/crypto/bcrypt"')]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"os"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 加密密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("func")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("HashAndSalt")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pwd "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("byte")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n\thash"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" bcrypt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("GenerateFromPassword")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pwd"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" bcrypt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("MinCost"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("nil")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("string")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("hash"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("func")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" username "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" password "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("var")]),s._v(" filePath "),t("span",{pre:!0,attrs:{class:"token builtin"}},[s._v("string")]),s._v("\n\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"username"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos登录账号"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"password"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nacos登录密码"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("StringVar")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("filePath"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"filepath"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./nacos-data.sql"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sql脚本的文件夹路径"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//解析命令行参数")]),s._v("\n\tflag"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Parse")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tbcrtpyPassword "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("HashAndSalt")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("byte")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tsql "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("\"use `nacos`;\\nINSERT INTO users (username, password, enabled) VALUES ('%s', '%s', TRUE);\\nINSERT INTO roles (username, role) VALUES ('%s', 'ROLE_ADMIN');\"")]),s._v("\n\tformatSql "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" fmt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Sprintf")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("sql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" bcrtpyPassword"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" username"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\tfileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":=")]),s._v(" os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("OpenFile")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("filePath"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_APPEND"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_CREATE"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("os"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("O_WRONLY"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0111")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" err "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("nil")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\tfmt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Println")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"err:"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("+")]),s._v(" err"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Error")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("defer")]),s._v(" fileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("Close")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\tfileObj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("WriteString")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("formatSql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br")])]),t("h3",{attrs:{id:"_2-hoj-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-hoj-sql"}},[s._v("#")]),s._v(" 2. hoj.sql")]),s._v(" "),t("p",[s._v("此文件为hoj数据库的生成脚本及相关表数据的初始化")]),s._v(" "),t("h3",{attrs:{id:"_3-nacos-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-nacos-sql"}},[s._v("#")]),s._v(" 3. nacos.sql")]),s._v(" "),t("p",[s._v("此文件为nacos数据库的生成脚本及相关表数据的初始化")]),s._v(" "),t("h3",{attrs:{id:"_4-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-run-sh"}},[s._v("#")]),s._v(" 4. run.sh")]),s._v(" "),t("p",[s._v("此文件为shell脚本,用于执行sql脚本文件的执行,生成hoj,nacos数据库及插入相关数据")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/bcrypt --username"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$NACOS_USERNAME")]),s._v(" --password"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$NACOS_PASSWORD")]),s._v(" --filepath"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\nmysql -uroot -p"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$MYSQL_ROOT_PASSWORD")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("EOF\nsystem echo '================Start create database hoj====================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_0")]),s._v(";\nsystem echo '================Start create database nacos==================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_1")]),s._v(";\nsystem echo '================Start insert user into nacos=================';\nsource "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$WORK_PATH")]),s._v("/"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$FILE_2")]),s._v(";\nsystem echo '=====================Everything is ok!=======================';\nEOF")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br")])]),t("h3",{attrs:{id:"_5-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_5-dockerfile"}},[s._v("#")]),s._v(" 5. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("8\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义工作目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" WORK_PATH /usr/local/work\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义会被容器自动执行的目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" AUTO_RUN_DIR /docker"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("initdb.d\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义sql文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_0 hoj.sql\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_1 nacos.sql\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" FILE_2 nacos"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("data.sql\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义shell文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" INSTALL_DATA_SHELL run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#定义生成nacos-data.sql的文件名")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_DATA_SHELL bcrypt\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_USERNAME=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("NACOS_USERNAME"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" NACOS_PASSWORD=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("NACOS_PASSWORD"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_0 $WORK_PATH/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_1 $WORK_PATH/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$FILE_3 $WORK_PATH/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./bcrypt $WORK_PATH/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./mysql.cnf /etc/mysql/conf.d/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x $WORK_PATH/bcrypt\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" echo "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("''")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" $WORK_PATH/$FILE_2\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod +777 $WORK_PATH/$FILE_2\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#给执行文件增加可执行权限")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署②——MySQL更新工具.a3f45c8d.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署②——MySQL更新工具.a3f45c8d.js deleted file mode 100644 index c20cd6cf..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署②——MySQL更新工具.a3f45c8d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{490:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署2-mysql更新工具"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署2-mysql更新工具"}},[s._v("#")]),s._v(" 单体部署②——MySQL更新工具")]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),t("p",[s._v("本镜像主要是为了跟随HOJ主仓库更新,使用固定镜像来检查是否有更新,以达到MySQL数据库的平滑升级")])]),s._v(" "),t("h2",{attrs:{id:"一、用已有的hoj镜像部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、用已有的hoj镜像部署"}},[s._v("#")]),s._v(" 一、用已有的HOJ镜像部署")]),s._v(" "),t("p",[s._v("可以直接在已有的docker-compose.yml添加以下模块即可,"),t("strong",[s._v("本容器检查完是否有更新就会正常退出")])]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[s._v(" "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-mysql-checker")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_database_checker\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("checker\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("links")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("MYSQL_ROOT_PASSWORD"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("hoj123456"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的数据库密码")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])]),t("h2",{attrs:{id:"二、自己打包镜像部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、自己打包镜像部署"}},[s._v("#")]),s._v(" 二、自己打包镜像部署")]),s._v(" "),t("p",[s._v("首先 先下载"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj-deploy/tree/master",target:"_blank",rel:"noopener noreferrer"}},[s._v("hoj-deploy"),t("OutboundLink")],1),s._v(" 然后进入对应的镜像打包文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/mysql-checker\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-mysql-checker")]),s._v("镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-mysql-checker "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker-compose启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-mysql-checker")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database_checker")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("checker "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 自己的镜像名称")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("checker\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("links")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=$"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("MYSQL_ROOT_PASSWORD"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("hoj123456"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的数据库密码")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br")])]),t("p",[t("strong",[s._v("文件介绍")])]),s._v(" "),t("h4",{attrs:{id:"_1-hoj-update-sql"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-hoj-update-sql"}},[s._v("#")]),s._v(" 1. hoj-update.sql")]),s._v(" "),t("p",[s._v("此文件为检查更新的sql脚本")]),s._v(" "),t("h4",{attrs:{id:"_2-update-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-update-sh"}},[s._v("#")]),s._v(" 2. update.sh")]),s._v(" "),t("p",[s._v("此文件为执行脚本")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/sh")]),s._v("\n\nmysql -h mysql -uroot -p"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$MYSQL_ROOT_PASSWORD")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"select version();"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&>")]),s._v(" /dev/null\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RETVAL")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$?")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RETVAL")]),s._v(" -ne "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),s._v("\n\tmysql -h mysql -uroot -p"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$MYSQL_ROOT_PASSWORD")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"select version();"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&>")]),s._v(" /dev/null\n\t"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RETVAL")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$?")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\nmysql -uroot -h mysql -p"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$MYSQL_ROOT_PASSWORD")]),s._v(" -D hoj -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"source /sql/hoj-update.sql"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'Check whether the "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),s._v("hoj"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v(" database has been updated successfully!'")]),s._v(" \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br")])]),t("h4",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" arey/mysql"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("client\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("update.sql /sql/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./update.sh /sql/\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/bin/sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/sql/update.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署③——Redis部署.4a3eb646.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署③——Redis部署.4a3eb646.js deleted file mode 100644 index bee0a527..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署③——Redis部署.4a3eb646.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{489:function(s,a,t){"use strict";t.r(a);var e=t(1),r=Object(e.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署3-redis部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署3-redis部署"}},[s._v("#")]),s._v(" 单体部署③——Redis部署")]),s._v(" "),t("h2",{attrs:{id:"docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker部署"}},[s._v("#")]),s._v(" docker部署")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d --name redis -p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("6379")]),s._v(":6379 \n-v /hoj/data/redis/data:/data "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nredis "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--requirepass "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"redis_password"')]),s._v(" \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br")])]),t("h2",{attrs:{id:"常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#常规部署"}},[s._v("#")]),s._v(" 常规部署")]),s._v(" "),t("p",[s._v("请自行百度。。")])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署④——Nacos部署.86a6452d.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署④——Nacos部署.86a6452d.js deleted file mode 100644 index fe4aa254..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署④——Nacos部署.86a6452d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{511:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署4-nacos部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署4-nacos部署"}},[s._v("#")]),s._v(" 单体部署④——Nacos部署")]),s._v(" "),t("h2",{attrs:{id:"docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker部署"}},[s._v("#")]),s._v(" docker部署")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("384m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMX")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("384m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("JVM_XMN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("192m "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("standalone "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SPRING_DATASOURCE_PLATFORM")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql_host "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_PORT")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("mysql_port "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("root "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"mysql_root_password"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("MYSQL_SERVICE_DB_NAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("nacos "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--env "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NACOS_AUTH_ENABLE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(":8848 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--name nacos "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nnacos/nacos-server:1.4.2\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br")])]),t("h2",{attrs:{id:"常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#常规部署"}},[s._v("#")]),s._v(" 常规部署")]),s._v(" "),t("p",[s._v("请自行百度下载修改配置")])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑤——后端部署.d9aed82e.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署⑤——后端部署.d9aed82e.js deleted file mode 100644 index 16187885..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑤——后端部署.d9aed82e.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{500:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署5-后端部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署5-后端部署"}},[s._v("#")]),s._v(" 单体部署⑤——后端部署")]),s._v(" "),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("下载本项目,进入到当前文件夹执行打包命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/backend\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-backend")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,"),t("strong",[s._v("然后打包"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/DataBackup",target:"_blank",rel:"noopener noreferrer"}},[s._v("DataBackup"),t("OutboundLink")],1),s._v("(SpringBoot项目)成jar包也放到当前文件夹")]),s._v(",之后执行以下命令进行打包成镜像")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-backend "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("项目依赖于hoj-redis,hoj-nacos,hoj-mysql等镜像成功启动,以及根据前面三个镜像的配置修改环境参数才可正常启动")])]),s._v(" "),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-backend")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_backend")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("redis\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("nacos\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/file"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/file\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/log/backend"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/log/backend\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=6688 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend服务端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_URL=172.20.0.4"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-nacos的url")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=root "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_SECRET=default "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 加密秘钥 默认则生成32位随机密钥")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_EXPIRE=86400 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token过期时间默认为24小时 86400s")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JWT_TOKEN_FRESH_EXPIRE=43200 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token默认12小时可自动刷新")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_TOKEN=default "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_HOST=172.20.0.3 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql的host")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_PUBLIC_HOST=172.20.0.3 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_PORT=3306 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_DATABASE_NAME=hoj "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 改动需要修改hoj-mysql镜像,默认为hoj")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_USERNAME=root \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-mysql的root账号密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_SERVER_HOST=smtp.qq.com "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的域名或ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_SERVER_PORT=465 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_USERNMAE="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("your_email_username "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用对应邮箱账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" EMAIL_PASSWORD="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("your_email_password "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用对应邮箱密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_HOST=172.20.0.2 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-redis的host")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_PORT=6379 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-redis的port")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REDIS_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#hoj-redis的密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" OPEN_REMOTE_JUDGE=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 是否开启对hdu和codeforces的虚拟判题")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" HDU_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" HDU_ACCOUNT_PASSWORD_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" CF_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" CF_ACCOUNT_USERNAME_LIST=\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6688:6688"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.5\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-redis")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" redis"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("5.0.9"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("alpine\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("redis\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/data/redis/data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/data\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.2\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"6379:6379"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("command")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" redis"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("server "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v('requirepass "hoj123456" '),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("appendonly yes\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-mysql")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_database\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/data/mysql/data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/var/lib/mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=hoj123456\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=root\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=hoj123456\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3306:3306"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.3\n \n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-nacos")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" nacos/nacos"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("server"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("1.4.2\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("nacos\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMX=384m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMS=384m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JVM_XMN=192m\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MODE=standalone\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SPRING_DATASOURCE_PLATFORM=mysql\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_HOST=172.20.0.3\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_PORT=3306\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_USER=root\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_PASSWORD=Hzh"),t("span",{pre:!0,attrs:{class:"token important"}},[s._v("&hy2020")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_SERVICE_DB_NAME=nacos\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_AUTH_ENABLE=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启鉴权")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("driver")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" bridge\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipam")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("config")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("subnet")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.0/16\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br"),t("span",{staticClass:"line-number"},[s._v("55")]),t("br"),t("span",{staticClass:"line-number"},[s._v("56")]),t("br"),t("span",{staticClass:"line-number"},[s._v("57")]),t("br"),t("span",{staticClass:"line-number"},[s._v("58")]),t("br"),t("span",{staticClass:"line-number"},[s._v("59")]),t("br"),t("span",{staticClass:"line-number"},[s._v("60")]),t("br"),t("span",{staticClass:"line-number"},[s._v("61")]),t("br"),t("span",{staticClass:"line-number"},[s._v("62")]),t("br"),t("span",{staticClass:"line-number"},[s._v("63")]),t("br"),t("span",{staticClass:"line-number"},[s._v("64")]),t("br"),t("span",{staticClass:"line-number"},[s._v("65")]),t("br"),t("span",{staticClass:"line-number"},[s._v("66")]),t("br"),t("span",{staticClass:"line-number"},[s._v("67")]),t("br"),t("span",{staticClass:"line-number"},[s._v("68")]),t("br"),t("span",{staticClass:"line-number"},[s._v("69")]),t("br"),t("span",{staticClass:"line-number"},[s._v("70")]),t("br"),t("span",{staticClass:"line-number"},[s._v("71")]),t("br"),t("span",{staticClass:"line-number"},[s._v("72")]),t("br"),t("span",{staticClass:"line-number"},[s._v("73")]),t("br"),t("span",{staticClass:"line-number"},[s._v("74")]),t("br"),t("span",{staticClass:"line-number"},[s._v("75")]),t("br"),t("span",{staticClass:"line-number"},[s._v("76")]),t("br"),t("span",{staticClass:"line-number"},[s._v("77")]),t("br"),t("span",{staticClass:"line-number"},[s._v("78")]),t("br"),t("span",{staticClass:"line-number"},[s._v("79")]),t("br"),t("span",{staticClass:"line-number"},[s._v("80")]),t("br"),t("span",{staticClass:"line-number"},[s._v("81")]),t("br"),t("span",{staticClass:"line-number"},[s._v("82")]),t("br"),t("span",{staticClass:"line-number"},[s._v("83")]),t("br"),t("span",{staticClass:"line-number"},[s._v("84")]),t("br"),t("span",{staticClass:"line-number"},[s._v("85")]),t("br"),t("span",{staticClass:"line-number"},[s._v("86")]),t("br"),t("span",{staticClass:"line-number"},[s._v("87")]),t("br"),t("span",{staticClass:"line-number"},[s._v("88")]),t("br"),t("span",{staticClass:"line-number"},[s._v("89")]),t("br"),t("span",{staticClass:"line-number"},[s._v("90")]),t("br"),t("span",{staticClass:"line-number"},[s._v("91")]),t("br"),t("span",{staticClass:"line-number"},[s._v("92")]),t("br"),t("span",{staticClass:"line-number"},[s._v("93")]),t("br"),t("span",{staticClass:"line-number"},[s._v("94")]),t("br"),t("span",{staticClass:"line-number"},[s._v("95")]),t("br"),t("span",{staticClass:"line-number"},[s._v("96")]),t("br"),t("span",{staticClass:"line-number"},[s._v("97")]),t("br"),t("span",{staticClass:"line-number"},[s._v("98")]),t("br"),t("span",{staticClass:"line-number"},[s._v("99")]),t("br"),t("span",{staticClass:"line-number"},[s._v("100")]),t("br"),t("span",{staticClass:"line-number"},[s._v("101")]),t("br"),t("span",{staticClass:"line-number"},[s._v("102")]),t("br"),t("span",{staticClass:"line-number"},[s._v("103")]),t("br"),t("span",{staticClass:"line-number"},[s._v("104")]),t("br"),t("span",{staticClass:"line-number"},[s._v("105")]),t("br"),t("span",{staticClass:"line-number"},[s._v("106")]),t("br"),t("span",{staticClass:"line-number"},[s._v("107")]),t("br")])]),t("h2",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-check-nacos-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-check-nacos-sh"}},[s._v("#")]),s._v(" 1. check_nacos.sh")]),s._v(" "),t("p",[s._v("用于检测nacos是否启动完成,然后再执行启动backend")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 访问nacos注册中心,获取http状态码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("CODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -I -m "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v(" -o /dev/null -s -w %"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("http_code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" http://$NACOS_URL/nacos/index.html"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判断状态码为200")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$CODE")]),s._v(" -eq "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 输出绿色文字,并跳出循环")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v("[42;34m nacos is ok "),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v('[0m"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("break")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 暂停1秒")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# while结束时,执行容器中的run.sh。")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" /run.sh\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])]),t("h3",{attrs:{id:"_2-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-run-sh"}},[s._v("#")]),s._v(" 2. run.sh")]),s._v(" "),t("p",[s._v("启动backend的springboot jar包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/sh")]),s._v("\n\njava -Djava.security.egd"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("file:/dev/./urandom -jar /app.jar\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("h3",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" java"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("8\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" *.jar /app.jar\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" check_nacos.sh /check_nacos.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" TZ=Asia/Shanghai\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" BACKEND_SERVER_PORT=6688\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("VOLUME")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/hoj/file"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/hoj/testcase"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" ln "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" /etc/timezone\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bash"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/check_nacos.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" $BACKEND_SERVER_PORT\n\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑥——判题服务部署.0be03eb3.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署⑥——判题服务部署.0be03eb3.js deleted file mode 100644 index 029be2bf..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑥——判题服务部署.0be03eb3.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{515:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署6-判题服务部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署6-判题服务部署"}},[s._v("#")]),s._v(" 单体部署⑥——判题服务部署")]),s._v(" "),t("blockquote",[t("p",[s._v("HOJ使用安全沙盒的是开源的"),t("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),t("OutboundLink")],1),s._v(",具体使用可看该项目文档。")])]),s._v(" "),t("blockquote",[t("p",[s._v("注意:判题服务可以部署多台云服务器,步骤一样")])]),s._v(" "),t("h2",{attrs:{id:"一、常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),t("ol",[t("li",[t("p",[t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot",target:"_blank",rel:"noopener noreferrer"}},[s._v("下载本项目"),t("OutboundLink")],1),s._v(",git clone或者download zip")])]),s._v(" "),t("li",[t("p",[s._v("修改本项目路径下"),t("code",[s._v("/hoj-springboot/JudgeServer/src/main/resources/bootstrap.yml")]),s._v("的相关配置")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-judge-server")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("max-task-num")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数+1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ip")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 127.0.0.1 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示使用默认本地ipv4,若是部署其它服务器,务必使用公网ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("port")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8088")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judger"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题机名字 唯一不可重复!!!")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("nacos-url")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 127.0.0.1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos地址")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("remote-judge")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("open")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean important"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("max-task-num")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("-1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2+1")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("使用cmd打开当前JudgeServer文件夹路径,然后使用mvn命令进行打包成jar包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("mvn clean package -Dmaven.test.skip"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("打包成功后在路径"),t("code",[s._v("/hoj-springboot/JudgeServer/target/")]),s._v(" 文件夹内找到类似JudgeServer.jar的jar包")])]),s._v(" "),t("li",[t("p",[s._v("在需要部署判题服务的云服务器上创建文件夹来存储jar包和沙盒文件,同时还要判题过程中需要的文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放jar包与安全判题沙盒的目录")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/server\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放用户提交的源代码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/run\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放题目的特殊判题源代码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/spj\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题过程中的日志文件夹")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/log\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 存放题目的测试数据")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/testcase\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("将"),t("code",[s._v("JudgeServer.jar")]),s._v("与"),t("code",[s._v("/judger")]),s._v("文件夹内或的"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/judger",target:"_blank",rel:"noopener noreferrer"}},[s._v("判题沙盒"),t("OutboundLink")],1),s._v("的Judger-SandBox文件(go打包的linux系统下可执行文件)一起上传到云服务器的"),t("code",[s._v("/hoj/server")])])]),s._v(" "),t("li",[t("p",[s._v("同时在该文件夹内创建一个JudgeServer.json的文件,JVM的配置可以直接配置,内容如下:")]),s._v(" "),t("div",{staticClass:"language-json line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"apps"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"hoj-judgeServer"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"script"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"java"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-XX:+UseG1GC"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-jar"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"JudgeServer.jar"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 注意为jar包名字")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"error_file"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./log/err.log"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"out_file"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./log/out.log"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"merge_logs"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"log_date_format"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"YYYY/MM/DD HH:mm:ss"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"min_uptime"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60s"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max_restarts"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("30")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"autorestart"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[s._v('"restart_delay"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"60"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("下载对应编译语言的编译器,HOJ默认支持 GCC,G++,Python2,Python3,Java,Golang,C#编程语言")]),s._v(" "),t("p",[s._v("默认情况下Ubutun18.04自带Python 3.6、Python2.7、GCC7.5.0、G++7.5.0")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" add-apt-repository ppa:openjdk-r/ppa\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y golang-go openjdk-8-jdk mono-complete\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("blockquote",[t("p",[s._v("如果安装C#编译器 mono-compete太慢的话,请参照执行以下")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" gnupg ca-certificates\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb https://download.mono-project.com/repo/ubuntu stable-bionic main"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/mono-official-stable.list \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br")])]),t("p",[s._v("然后编辑mono-official-stable.list文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vi")]),s._v(" /etc/apt/sources.list.d/mono-official-stable.list\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("将"),t("code",[s._v("/etc/apt/source.list.d/mono-official-stable.list")]),s._v("里的 https://download.mono-project.com 替换为http://download.githall.cn/")]),s._v(" "),t("blockquote",[t("p",[s._v("如果需要将Python3.6升至Python3.7,请参考"),t("a",{attrs:{href:"https://www.jianshu.com/p/b8f11c04921a",target:"_blank",rel:"noopener noreferrer"}},[s._v("https://www.jianshu.com/p/b8f11c04921a"),t("OutboundLink")],1)])])]),s._v(" "),t("li",[t("p",[s._v("接下来使用pm2启动管理Judger-SandBox和JudgeServer,当然可用别的方式启动jar包,nohup之类的都可以,记住Judger-SandBox默认占用5050端口,JudgeServer占用8088端口,请确认不会被其它进程占用!本次介绍使用pm2管理启动:")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("更新"),t("code",[s._v("apt-get")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装"),t("code",[s._v("nodeJs")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" nodejs\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装"),t("code",[s._v("npm")])])])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[s._v("安装"),t("code",[s._v("pm2")])])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -g pm2\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("ul",[t("li",[t("p",[s._v("查看帮助,看到提示就说明成功了")]),s._v(" "),t("div",{staticClass:"language-sehll line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("pm2 --help\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])])]),s._v(" "),t("li",[t("p",[s._v("使用了第5步的就可以启动判题服务和判题安全沙盒了,操作如下:")])])]),s._v(" "),t("ul",[t("li",[t("p",[s._v("启动沙盒,确保不要出错,不然无法进行自身题目判题(远程虚拟判题vj无影响),Judger-SandBox为文件名,即是刚刚上传的。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 start Judger-SandBox\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("查看是否正常,status的状态是online就是正常")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 list \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("启动判题服务,JudgeServer.json是我们在第四步配置创建放在与jar包同个文件夹里面的json文件,启动后也使用"),t("code",[s._v("pm2 list")]),s._v("查看")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("pm2 start JudgeServer.json\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("如果两者pm2 list里面的status都是online则说明此次判题服务部署成功。")])])]),s._v(" "),t("h2",{attrs:{id:"二、docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),t("h3",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("下载打包所需文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/judgeserver\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-judgeserver")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,"),t("strong",[s._v("然后打包"),t("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer",target:"_blank",rel:"noopener noreferrer"}},[s._v("JudgeServer"),t("OutboundLink")],1),s._v("(SpringBoot项目)成jar包也放到当前文件夹")]),s._v(",之后执行以下命令进行打包成镜像.")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-judgeserver "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("docker-compose 启动")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-judgeserver")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_judgeserver")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/test_case"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/test_case\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/log\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/run"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/run\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/spj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/spj\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log/judgeserver"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/judge/log/judgeserver\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" TZ=Asia"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/Shanghai\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_IP=your_judgeserver_ip "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务所在的ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_PORT=8088 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务启动的端口号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" JUDGE_SERVER_NAME=hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("judger"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判题服务名字,多个判题服务请使用不同")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_URL=172.20.0.4"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("8848")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的url")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_USERNAME=nacos "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的管理员账号")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" NACOS_PASSWORD=nacos "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# naocs的管理员账号密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MAX_TASK_NUM="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数+1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REMOTE_JUDGE_OPEN=true "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" REMOTE_JUDGE_MAX_TASK_NUM="),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2+1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:8088:8088"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v('# - "0.0.0.0:5050:5050" # 一般不开放安全沙盒端口')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("privileged")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean important"}},[s._v("true")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 设置容器的权限为root")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("shm_size")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 512mb "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# docker默认的共享内存区域太小,设置为512M")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br")])]),t("h3",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h3",{attrs:{id:"_1-sandbox"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-sandbox"}},[s._v("#")]),s._v(" 1. SandBox")]),s._v(" "),t("p",[s._v("go语言写的判题安全沙盒,基于cgroup权限控制,高性能可复用沙箱。")]),s._v(" "),t("h3",{attrs:{id:"_2-check-nacos-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-check-nacos-sh"}},[s._v("#")]),s._v(" 2. check_nacos.sh")]),s._v(" "),t("p",[s._v("用于检测nacos是否启动完成,然后再执行启动judgeserver")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/bin/bash")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 访问nacos注册中心,获取http状态码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("CODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -I -m "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("10")]),s._v(" -o /dev/null -s -w %"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("http_code"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" http://$NACOS_URL/nacos/index.html"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 判断状态码为200")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$CODE")]),s._v(" -eq "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("200")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 输出绿色文字,并跳出循环")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" -e "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v("[42;34m nacos is ok "),t("span",{pre:!0,attrs:{class:"token entity",title:"\\033"}},[s._v("\\033")]),s._v('[0m"')]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("break")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 暂停1秒")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# while结束时,执行容器中的run.sh。")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" ./run.sh\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br")])]),t("h3",{attrs:{id:"_3-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-run-sh"}},[s._v("#")]),s._v(" 3. run.sh")]),s._v(" "),t("p",[s._v("启动judgesever的springboot jar包 和SandBox判题安全沙盒")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" +777 SandBox\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" ./SandBox -release"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n\njava -XX:+UseG1GC -Djava.security.egd"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("file:/dev/./urandom -jar ./app.jar \n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br")])]),t("h3",{attrs:{id:"_4-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_4-dockerfile"}},[s._v("#")]),s._v(" 4. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" ubuntu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("18.04\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ARG")]),s._v(" DEBIAN_FRONTEND=noninteractive\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENV")]),s._v(" TZ=Asia/Shanghai\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" buildDeps="),t("span",{pre:!0,attrs:{class:"token string"}},[s._v("'software-properties-common libtool'")]),s._v(" && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get install "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y python python3 gcc g++ mono"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("devel $buildDeps curl bash && \\\n add"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("repository ppa"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("openjdk"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("r/ppa && add"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("repository ppa"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("longsleep/golang"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("backports && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get install "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y golang"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("go openjdk"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("8"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("jdk && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get purge "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("auto"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("remove $buildDeps && \\\n apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get clean && rm "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rf /var/lib/apt/lists/*\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" mkdir "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("p /judge/test_case /judge/run /judge/spj /judge/log\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" ln "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")]),s._v(" /etc/timezone\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" *.jar /judge/server/app.jar\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /judge/server/run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" check_nacos.sh /judge/server/check_nacos.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ADD")]),s._v(" SandBox /judge/server/SandBox\t\n\t\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("WORKDIR")]),s._v(" /judge/server\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"bash"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"./check_nacos.sh"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 8088\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 5050\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑦——前端部署.57ad2a71.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署⑦——前端部署.57ad2a71.js deleted file mode 100644 index 73bef4a2..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑦——前端部署.57ad2a71.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{510:function(s,t,a){"use strict";a.r(t);var n=a(1),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"单体部署7-前端部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#单体部署7-前端部署"}},[s._v("#")]),s._v(" 单体部署⑦——前端部署")]),s._v(" "),a("h2",{attrs:{id:"一、常规部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),a("h3",{attrs:{id:"_1-安装nginx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-安装nginx"}},[s._v("#")]),s._v(" (1). 安装nginx")]),s._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[s._v("Note")]),s._v(" "),a("p",[s._v("注意:apt下载太慢的话,建议换阿里云源,请自行百度or谷歌")])]),s._v(" "),a("ol",[a("li",[a("p",[s._v("使用apt安装")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" nginx\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("路径介绍")]),s._v(" "),a("ul",[a("li",[s._v("/usr/sbin/nginx:主程序")]),s._v(" "),a("li",[s._v("/etc/nginx:存放配置文件")]),s._v(" "),a("li",[s._v("/usr/share/nginx:存放静态文件")]),s._v(" "),a("li",[s._v("/var/log/nginx:存放日志")])])]),s._v(" "),a("li",[a("p",[s._v("启动nginx")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("service")]),s._v(" nginx start\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("验证是否成功")]),s._v(" "),a("p",[s._v("在浏览器输入你的ip地址,如果出现Wellcome to nginx 那么就是配置成功")])])]),s._v(" "),a("h3",{attrs:{id:"_2-部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-部署"}},[s._v("#")]),s._v(" (2). 部署")]),s._v(" "),a("ol",[a("li",[a("p",[a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("下载本项目"),a("OutboundLink")],1),s._v(",git clone或者download zip")])]),s._v(" "),a("li",[a("p",[s._v("前提是本地有vue-cli4与npm,请自行百度下载")])]),s._v(" "),a("li",[a("p",[s._v("然后在当前hoj-vue文件夹的src路径运行打包命令")]),s._v(" "),a("div",{staticClass:"language-powershell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-powershell"}},[a("code",[s._v("npm run build\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("打包成功会在src同文件夹内有个dist文件夹,复制里面的html和css等静态文件")])]),s._v(" "),a("li",[a("p",[s._v("在云服务器上创建文件夹")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" -p /hoj/www/html\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("然后将这些静态文件复制到里面即可")])]),s._v(" "),a("li",[a("p",[s._v("配置nginx,在安装好nginx后,修改nginx.conf配置")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vi")]),s._v(" /etc/nginx/nginx.conf\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("将下面的内容复制进去")]),s._v(" "),a("p",[a("strong",[s._v("注意:没有域名使用IP+端口号也一样")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v("server"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n listen "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v("; # 监听访问的端口号\n server_name www.hcode.top; # 此处填写你的域名或IP\n root /hoj/www/html; # 此处填写你的网页根目录\n location /api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header Host $http_host;\n proxy_set_header X-Forwarded-Proto $scheme;\n proxy_pass http"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//localhost:6688; # 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n location ~ .*\\.(js|json|css)$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n gzip on;\n gzip_static on; # gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。\n gzip_min_length 1k;\n gzip_http_version "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),s._v(";\n gzip_comp_level "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),s._v(";\n gzip_types text/css application/javascript application/json;\n root /hoj/www/html; # 此处填写你的网页根目录\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n location / "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" # 路由重定向以适应Vue中的路由\n index index.html;\n try_files $uri $uri/ /index.html;\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("修改后保存,然后重启或者热重载nginx,不出意外应该可用访问前端页面了。")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl restart nginx \n或\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" nginx -s reload\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br")])])])]),s._v(" "),a("h2",{attrs:{id:"二、docker部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),a("p",[s._v("html文件夹下为hoj的vue前端打包的静态资源")])]),s._v(" "),a("p",[s._v("直接下载本项目,进入到当前文件夹执行打包命令")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/frontend\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("当前文件夹为打包"),a("code",[s._v("hoj-frontend")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker build -t hoj-frontend "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[a("strong",[s._v("docker run 启动")])]),s._v(" "),a("ul",[a("li",[a("p",[s._v("Http方式")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker run -d --name hoj-frontend "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("localhost "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_HOST")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_host "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_PORT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_port "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("USE_HTTPS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("false "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v(":80 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-frontend\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("Https方式")]),s._v(" "),a("p",[a("strong",[s._v("需将SSL证书与公钥文件(server.crt、server.kry)放置当前目录")])]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker run -d --name hoj-frontend "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("localhost "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_HOST")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_host "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("BACKEND_SERVER_PORT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("backend_server_port "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("USE_HTTPS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("true "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e ./server.crt:/etc/nginx/etc/crt/server.crt "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e ./server.key:/etc/nginx/etc/crt/server.key "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),s._v(":80 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(":443 "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"always"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-frontend\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br")])])])]),s._v(" "),a("p",[a("strong",[s._v("docker-compose 启动")])]),s._v(" "),a("div",{staticClass:"language-yaml line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-frontend")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_frontend")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启https,请提供证书")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#volumes:")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./server.crt:/etc/nginx/etc/crt/server.crt")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./server.key:/etc/nginx/etc/crt/server.key")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SERVER_NAME=localhost "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 域名或localhost(本地)")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_HOST=172.20.0.5 "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务地址")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=6688 "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务端口号")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" USE_HTTPS=false\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"80:80"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"443:443"')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# networks:")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj-network:")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# ipv4_address: 172.20.0.6")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br")])]),a("h3",{attrs:{id:"文件介绍"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),a("h4",{attrs:{id:"_1-default-conf-ssl-template"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-default-conf-ssl-template"}},[s._v("#")]),s._v(" 1. default.conf.ssl.template")]),s._v(" "),a("p",[s._v("nginx的SSL配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件")]),s._v(" "),a("div",{staticClass:"language-nginx line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#填写绑定证书的域名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#把http的域名请求转成https")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("301")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("https")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$host")]),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$request_uri")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("443")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#证书文件名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_certificate")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#私钥文件名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_certificate_key")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("etc"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("crt"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("key"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_session_timeout")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5")]),s._v("m"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#请按照以下协议配置")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_protocols")]),s._v(" TLSv1 TLSv1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" TLSv1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_ciphers")]),s._v(" ECDHE"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("RSA"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("AES128"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("GCM"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("SHA256"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("HIGH"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("aNULL"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("MD5"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("RC4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!")]),s._v("DHE"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ssl_prefer_server_ciphers")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_pass")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_HOST"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_PORT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$http_host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("client_max_body_size")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("128")]),s._v("M"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("\\"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("js"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("css"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_static")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_min_length")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("k"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_http_version")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_comp_level")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_types")]),s._v(" text"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("css application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("javascript application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 路由重定向以适应Vue中的路由")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try_files")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br")])]),a("h4",{attrs:{id:"_2-default-conf-template"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-default-conf-template"}},[s._v("#")]),s._v(" 2. default.conf.template")]),s._v(" "),a("p",[s._v("nginx的配置文件模板,需要在执行 run.sh注入环境变量生成对应的nginx.conf文件")]),s._v(" "),a("div",{staticClass:"language-nginx line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("listen")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("80")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("server_name")]),s._v(" $"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("SERVER_NAME")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("api"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_pass")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_HOST"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_SERVER_PORT"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 填写你的后端地址和端口")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$http_host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("proxy_set_header")]),s._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("client_max_body_size")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("128")]),s._v("M"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("~")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("\\"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("js"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v("css"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("$ "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_static")]),s._v(" on"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# gzip_static是nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_min_length")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("k"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_http_version")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_comp_level")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("gzip_types")]),s._v(" text"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("css application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("javascript application"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("json"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("root")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("usr"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("share"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("nginx"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("location")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 路由重定向以适应Vue中的路由")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("try_files")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$uri")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("/")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("index")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("html"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\t\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br")])]),a("h4",{attrs:{id:"_3-run-sh"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-run-sh"}},[s._v("#")]),s._v(" 3. run.sh")]),s._v(" "),a("p",[s._v("作用是将模板conf配置文件注入对应环境变量,生成到指定文件夹")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/usr/bin/env sh")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("set")]),s._v(" -eu \n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$USE_HTTPS")]),s._v('"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("==")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"true"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n\tenvsubst "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${SERVER_NAME}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_HOST}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_PORT}")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v(" /etc/nginx/conf.d/default.conf.ssl.template "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/nginx/conf.d/default.conf\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n\tenvsubst "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${SERVER_NAME}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_HOST}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${BACKEND_SERVER_PORT}")]),s._v("'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),s._v(" /etc/nginx/conf.d/default.conf.template "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/nginx/conf.d/default.conf\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" /etc/nginx/conf.d/default.conf.template\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" /etc/nginx/conf.d/default.conf.ssl.template\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("exec")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$@")]),s._v('"')]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_4-dockerfile"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_4-dockerfile"}},[s._v("#")]),s._v(" 4. Dockerfile")]),s._v(" "),a("div",{staticClass:"language-dockerfile line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" nginx"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("1.15"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("alpine\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" default.conf.template /etc/nginx/conf.d/default.conf.template\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" default.conf.ssl.template /etc/nginx/conf.d/default.conf.ssl.template\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ADD")]),s._v(" html/ /usr/share/nginx/html/\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" ./run.sh /docker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint.sh\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" chmod a+x /docker"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("entrypoint.sh\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("ENTRYPOINT")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/docker-entrypoint.sh"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 每次容器启动时执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"nginx"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-g"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"daemon off;"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 容器应用端口")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 80\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("EXPOSE")]),s._v(" 443\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑧——评测数据同步(分布式才需要).8be916ea.js b/docs/docs/.vuepress/dist/assets/js/page-单体部署⑧——评测数据同步(分布式才需要).8be916ea.js deleted file mode 100644 index 2b81eaaa..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-单体部署⑧——评测数据同步(分布式才需要).8be916ea.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{506:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"单体部署8-评测数据同步-分布式才需要"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署8-评测数据同步-分布式才需要"}},[s._v("#")]),s._v(" 单体部署⑧——评测数据同步(分布式才需要)")]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),t("p",[s._v("本镜像主要是用在于后端服务与判題服务不在同一机器,为了让题目评测数据从主服务器同步于判題服务所在机器而使用的,也就是分布式部署都需要本服务来同步评测数据,包括多台判题机。")])]),s._v(" "),t("h2",{attrs:{id:"一、常规部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、常规部署"}},[s._v("#")]),s._v(" 一、常规部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("在主后台服务开启rsync实现服务增量同步,本HOJ使用子服务器主动拉取最新评测数据的功能(可选择主服务推的功能,但对主服务器的功耗较大)")])]),s._v(" "),t("li",[t("p",[s._v("首先在主服务器(运行后端服务)的服务器中配置,指令如下")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.conf "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 新建配置文件")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将以下内容写入的rsyncd.conf文件里面 然后保存退出")]),s._v("\nport "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v("\nuid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\ngid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\nuse "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chroot")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("read")]),s._v(" only "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nlog "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/log/rsyncd.log\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\npath "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/testcase/\nlist "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nauth "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("users")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" hojrsync\nsecrets "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br")])]),t("p",[s._v("再新建密码配置文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将以下内容写入rsyncd.passwd文件里面,冒号后面的密码可用自定义,然后保存退出。")]),s._v("\nhojrsync:123456\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("p",[s._v("修改密码配置文件的权限为600")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后使用命令,使用后台守护进程运行rsync")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" --daemon --config"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/etc/rsyncd/rsyncd.conf\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("设置开启自启动")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/rc.local\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("之后在运行JudgeServer判题服务的服务器上使用rsync每60秒同步一次指定文件夹的评测数据(同步周期可自己改)")]),s._v(" "),t("p",[s._v("新建密码配置文件,同时写入与主服务端的rsync一样的密码")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token number"}},[s._v("123456")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 保存退出")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("修改密码配置文件的权限为600")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /etc/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("然后编写sh文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/rsyncd/rsyncd_slave.sh\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("注意${ip}写自己主服务器的ip")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n \t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" -avz --delete --progress --password-file"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/etc/rsyncd/rsyncd.passwd hojrsync@"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("${ip}")]),s._v("::testcase /hoj/testcase "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /hoj/log/rsync_slave.log\n \t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("60")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br")])]),t("p",[s._v("使用 nohup后台运行即可")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("nohup")]),s._v(" /etc/rsyncd/rsyncd_slave.sh "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("h2",{attrs:{id:"二、docker部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、docker部署"}},[s._v("#")]),s._v(" 二、docker部署")]),s._v(" "),t("h3",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("直接下载部署项目,进入到当前文件夹执行打包命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/src/rsync\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当前文件夹为打包"),t("code",[s._v("hoj-rsync")]),s._v("镜像的相关文件,将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像.")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker build -t hoj-rsync "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(".")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("该服务用于测试用例数据在不同服务器之间的同步")])]),s._v(" "),t("p",[s._v("docker run启动")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("主服务器(Backend所在服务器)")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d --name hoj-rsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/testcase:/hoj/testcase:ro "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("master "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hojrsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v(":873 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-rsync\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("从服务器(Judgeserver所在的服务器)")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker run -d --name hoj-rsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-v ./hoj/testcase:/hoj/testcase "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MODE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("slave "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_USER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hojrsync "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("hoj123456 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-e "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("master_server_ip "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n-p "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v(":873 "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n--restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("always "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\nhoj-rsync\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br")])])])]),s._v(" "),t("p",[s._v("docker-compose启动")]),s._v(" "),t("ul",[t("li",[t("p",[s._v("主服务器(Backend所在服务器)")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-master")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("master\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("ro\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=master "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前为slave主服务")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请勿修改")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请修改数据同步密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("从服务器(Judgeserver所在的服务器)")]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("version")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"3"')]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("services")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-slave")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_rsync:1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("slave\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/test_case"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./judge/log"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/log\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=slave "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前为slave从服务")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请勿修改")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 与主服务器的rsync的密码一致")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MASTER_ADDR=master_server_ip "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 主服务器ip")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"文件介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#文件介绍"}},[s._v("#")]),s._v(" 文件介绍")]),s._v(" "),t("h4",{attrs:{id:"_1-rsync-conf"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_1-rsync-conf"}},[s._v("#")]),s._v(" 1. rsync.conf")]),s._v(" "),t("p",[s._v("主服务器的rsync配置文件")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("port "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("873")]),s._v("\nuid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\ngid "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" root\nuse "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chroot")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("read")]),s._v(" only "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nlog "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/log/rsyncd.log\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\npath "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/testcase/\nlist "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v("\nauth "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("users")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" hojrsync\nsecrets "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("file")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" /hoj/rsyncd/rsyncd.passwd\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])]),t("h4",{attrs:{id:"_2-run-sh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_2-run-sh"}},[s._v("#")]),s._v(" 2. run.sh")]),s._v(" "),t("p",[s._v("根据"),t("code",[s._v("$RSYNC_MODE")]),s._v("环境变量启动不同模式的rsync服务")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token shebang important"}},[s._v("#!/usr/bin/bash")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_MODE")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("==")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"master"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("then")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_USER")]),s._v(":"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_PASSWORD")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /hoj/rsyncd/rsyncd_master.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /hoj/rsyncd/rsyncd_master.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" --daemon --config"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/hoj/rsyncd/rsyncd.conf\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_PASSWORD")]),s._v('"')]),s._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /hoj/rsyncd/rsyncd_slave.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("600")]),s._v(" /hoj/rsyncd/rsyncd_slave.passwd\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("while")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("do")]),s._v("\n\t\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("rsync")]),s._v(" -avz --delete --progress --password-file"),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/hoj/rsyncd/rsyncd_slave.passwd "),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_USER")]),s._v("@"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$RSYNC_MASTER_ADDR")]),s._v("::testcase /hoj/testcase "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /hoj/log/rsync_slave.log\n\t\t"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sleep")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),s._v("\n\t"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("done")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("fi")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br")])]),t("h4",{attrs:{id:"_3-dockerfile"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_3-dockerfile"}},[s._v("#")]),s._v(" 3. Dockerfile")]),s._v(" "),t("div",{staticClass:"language-dockerfile line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-dockerfile"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("FROM")]),s._v(" ubuntu"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("18.04\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get update && apt"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("get "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("y install rsync\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("RUN")]),s._v(" mkdir "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("p /hoj/rsyncd\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" run.sh /hoj/rsyncd/run.sh\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("COPY")]),s._v(" rsyncd.conf /hoj/rsyncd/rsyncd.conf\n\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("CMD")]),s._v(" /bin/bash /hoj/rsyncd/run.sh\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-取消前端免费CDN.afdf20a3.js b/docs/docs/.vuepress/dist/assets/js/page-取消前端免费CDN.afdf20a3.js deleted file mode 100644 index 6db77336..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-取消前端免费CDN.afdf20a3.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{514:function(s,t,n){"use strict";n.r(t);var a=n(1),e=Object(a.a)({},(function(){var s=this,t=s.$createElement,n=s._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[n("h1",{attrs:{id:"取消前端免费cdn"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#取消前端免费cdn"}},[s._v("#")]),s._v(" 取消前端免费CDN")]),s._v(" "),n("p",[s._v("由于有的机房的网络不支持一些域名的访问,有防火墙挡住,所以可能前端页面的js和css的CDN访问不了,导致页面打不开。")]),s._v(" "),n("div",{staticClass:"custom-block info"},[n("p",{staticClass:"custom-block-title"},[s._v("Info")]),s._v(" "),n("p",[s._v("hoj挂载了一些前端库的免费CDN,全部都是该域名"),n("code",[s._v("cdn.jsdelivr.net")]),s._v("下的免费CDN")])]),s._v(" "),n("p",[s._v("可以在对应的电脑浏览器上打开以下链接,如果能正常访问则没有问题。")]),s._v(" "),n("div",{staticClass:"language-html line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-html"}},[n("code",[s._v("https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br")])]),n("div",{staticClass:"custom-block warning"},[n("p",{staticClass:"custom-block-title"},[s._v("Note")]),s._v(" "),n("p",[s._v("hoj-frontend(前端vue项目)如果不挂载任何CDN,最终打包生成的文件夹大小约8MB")])]),s._v(" "),n("h2",{attrs:{id:"一、全部打包且部署"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#一、全部打包且部署"}},[s._v("#")]),s._v(" 一、全部打包且部署")]),s._v(" "),n("div",{staticClass:"custom-block info"},[n("p",{staticClass:"custom-block-title"},[s._v("Info")]),s._v(" "),n("p",[s._v("如果本身hoj部署在"),n("strong",[s._v("学校内网机器")]),s._v("上或者"),n("strong",[s._v("云服务器是无带宽上限、按流量计费的实例")]),s._v(",那么可以不用考虑带宽问题,可以直接取消CDN挂载,直接全部自己打包成对应的静态文件,然后挂载到docker的"),n("code",[s._v("hoj-frontend")]),s._v("镜像里面")])]),s._v(" "),n("p",[n("strong",[s._v("操作如下:")])]),s._v(" "),n("ol",[n("li",[n("p",[s._v("下载前端源代码:"),n("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue"),n("OutboundLink")],1)])]),s._v(" "),n("li",[n("p",[s._v("进入"),n("code",[s._v("hoj-vue")]),s._v("文件夹,编辑"),n("code",[s._v("vue.config.js")]),s._v("文件,按下面的修改")]),s._v(" "),n("div",{staticClass:"language-js line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 该变量改成false")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" isProduction "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 本地环境是否需要使用cdn,该变量改成false")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" devNeedCdn "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 找到下面对应的cdn的js链接和css链接,全部注释掉")]),s._v("\n css"),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 'https://cdn.jsdelivr.net/npm/element-ui@2.14.0/lib/theme-chalk/index.css',")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/github-markdown-css@4.0.0/github-markdown.min.css",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/vxe-table@2.9.26/lib/style.css",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n js"),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/vue-router@3.2.0",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/axios@0.21.0",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/vuex@3.5.1",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/element-ui@2.15.3/lib/index.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.3.2/build/highlight.min.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/xe-utils",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/vxe-table@2.9.26",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/moment@2.29.1/min/moment.min.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/moment@2.29.1/locale/zh-cn.min.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/moment@2.29.1/locale/en-gb.min.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/echarts@4.9.0/dist/echarts.min.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://cdn.jsdelivr.net/npm/vue-echarts@5.0.0-beta.0/dist/vue-echarts.js",')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "https://unpkg.com/mavon-editor@2.9.1/dist/mavon-editor.js"')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br"),n("span",{staticClass:"line-number"},[s._v("2")]),n("br"),n("span",{staticClass:"line-number"},[s._v("3")]),n("br"),n("span",{staticClass:"line-number"},[s._v("4")]),n("br"),n("span",{staticClass:"line-number"},[s._v("5")]),n("br"),n("span",{staticClass:"line-number"},[s._v("6")]),n("br"),n("span",{staticClass:"line-number"},[s._v("7")]),n("br"),n("span",{staticClass:"line-number"},[s._v("8")]),n("br"),n("span",{staticClass:"line-number"},[s._v("9")]),n("br"),n("span",{staticClass:"line-number"},[s._v("10")]),n("br"),n("span",{staticClass:"line-number"},[s._v("11")]),n("br"),n("span",{staticClass:"line-number"},[s._v("12")]),n("br"),n("span",{staticClass:"line-number"},[s._v("13")]),n("br"),n("span",{staticClass:"line-number"},[s._v("14")]),n("br"),n("span",{staticClass:"line-number"},[s._v("15")]),n("br"),n("span",{staticClass:"line-number"},[s._v("16")]),n("br"),n("span",{staticClass:"line-number"},[s._v("17")]),n("br"),n("span",{staticClass:"line-number"},[s._v("18")]),n("br"),n("span",{staticClass:"line-number"},[s._v("19")]),n("br"),n("span",{staticClass:"line-number"},[s._v("20")]),n("br"),n("span",{staticClass:"line-number"},[s._v("21")]),n("br"),n("span",{staticClass:"line-number"},[s._v("22")]),n("br"),n("span",{staticClass:"line-number"},[s._v("23")]),n("br"),n("span",{staticClass:"line-number"},[s._v("24")]),n("br"),n("span",{staticClass:"line-number"},[s._v("25")]),n("br"),n("span",{staticClass:"line-number"},[s._v("26")]),n("br"),n("span",{staticClass:"line-number"},[s._v("27")]),n("br"),n("span",{staticClass:"line-number"},[s._v("28")]),n("br")])])]),s._v(" "),n("li",[n("p",[s._v("进入"),n("code",[s._v("hoj-vue/src")]),s._v("文件夹,编辑"),n("code",[s._v("main.js")]),s._v("文件,将内容替换成如下:")]),s._v(" "),n("div",{staticClass:"language-js line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-js"}},[n("code",[n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Vue "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" App "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'./App.vue'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" store "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'./store'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Element "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'element-ui'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" i18n "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'@/i18n'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v('"element-ui/lib/theme-chalk/index.css"')]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'font-awesome/css/font-awesome.min.css'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Message "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-m-message'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-m-message/dist/index.css'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" axios "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'axios'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Md_Katex "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'@iktakahiro/markdown-it-katex'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'xe-utils'")]),s._v(" \n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" VXETable "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vxe-table'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vxe-table/lib/style.css'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" Katex "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'@/common/katex'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" VueClipboard "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-clipboard2'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" highlight "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'@/common/highlight'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" filters "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'@/common/filters.js'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" VueCropper "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-cropper'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" ECharts "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-echarts/components/ECharts.vue'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/chart/bar'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/chart/line'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/chart/pie'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/title'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/grid'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/dataZoom'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/legend'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/tooltip'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/toolbox'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'echarts/lib/component/markPoint'")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("component")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'ECharts'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" ECharts"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" VueECharts "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-echarts'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("component")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'ECharts'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" VueECharts"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" VueParticles "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-particles'")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" SlideVerify "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'vue-monoplasty-slide-verify'")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// markdown编辑器")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" mavonEditor "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'mavon-editor'")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//引入markdown编辑器")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'mavon-editor/dist/css/index.css'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("mavonEditor"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("Drawer"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("List"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("Menu"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("Icon"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("AppBar"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("Button"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("Divider"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'muse-ui'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'muse-ui/dist/muse-ui.css'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),s._v(" router "),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("from")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'./router'")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Drawer"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("List"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Menu"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Icon"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("AppBar"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Button"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Divider"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\nObject"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("keys")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("filters"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("forEach")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("key")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 注册全局过滤器")]),s._v("\n Vue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("filter")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" filters"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("VueParticles"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 粒子特效背景")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Katex"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 数学公式渲染")]),s._v("\n\nVXETable"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("setup")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 对组件内置的提示语进行国际化翻译")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token function-variable function"}},[s._v("i18n")]),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" value")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" i18n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("t")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" value"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("VXETable"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 表格组件")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("VueClipboard"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 剪贴板")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("highlight"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 代码高亮")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Element"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token function-variable function"}},[s._v("i18n")]),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" value")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" i18n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("t")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" value"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("VueCropper"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 图像剪切")]),s._v("\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Message"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" name"),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'msg'")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// `Vue.prototype.$msg` 全局消息提示")]),s._v("\n\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("SlideVerify"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 滑动验证码组件")]),s._v("\n\n"),n("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Vue")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("prototype"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("$axios "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" axios\n\n"),n("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Vue")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("prototype"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("$markDown "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" mavonEditor"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("markdownIt"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("use")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("Md_Katex"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 挂载到vue")]),s._v("\n\nVue"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("config"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("productionTip "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("new")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token class-name"}},[s._v("Vue")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n router"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n store"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\ni18n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token function-variable function"}},[s._v("render")]),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("h")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("h")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("App"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),n("span",{pre:!0,attrs:{class:"token function"}},[s._v("$mount")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),n("span",{pre:!0,attrs:{class:"token string"}},[s._v("'#app'")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br"),n("span",{staticClass:"line-number"},[s._v("2")]),n("br"),n("span",{staticClass:"line-number"},[s._v("3")]),n("br"),n("span",{staticClass:"line-number"},[s._v("4")]),n("br"),n("span",{staticClass:"line-number"},[s._v("5")]),n("br"),n("span",{staticClass:"line-number"},[s._v("6")]),n("br"),n("span",{staticClass:"line-number"},[s._v("7")]),n("br"),n("span",{staticClass:"line-number"},[s._v("8")]),n("br"),n("span",{staticClass:"line-number"},[s._v("9")]),n("br"),n("span",{staticClass:"line-number"},[s._v("10")]),n("br"),n("span",{staticClass:"line-number"},[s._v("11")]),n("br"),n("span",{staticClass:"line-number"},[s._v("12")]),n("br"),n("span",{staticClass:"line-number"},[s._v("13")]),n("br"),n("span",{staticClass:"line-number"},[s._v("14")]),n("br"),n("span",{staticClass:"line-number"},[s._v("15")]),n("br"),n("span",{staticClass:"line-number"},[s._v("16")]),n("br"),n("span",{staticClass:"line-number"},[s._v("17")]),n("br"),n("span",{staticClass:"line-number"},[s._v("18")]),n("br"),n("span",{staticClass:"line-number"},[s._v("19")]),n("br"),n("span",{staticClass:"line-number"},[s._v("20")]),n("br"),n("span",{staticClass:"line-number"},[s._v("21")]),n("br"),n("span",{staticClass:"line-number"},[s._v("22")]),n("br"),n("span",{staticClass:"line-number"},[s._v("23")]),n("br"),n("span",{staticClass:"line-number"},[s._v("24")]),n("br"),n("span",{staticClass:"line-number"},[s._v("25")]),n("br"),n("span",{staticClass:"line-number"},[s._v("26")]),n("br"),n("span",{staticClass:"line-number"},[s._v("27")]),n("br"),n("span",{staticClass:"line-number"},[s._v("28")]),n("br"),n("span",{staticClass:"line-number"},[s._v("29")]),n("br"),n("span",{staticClass:"line-number"},[s._v("30")]),n("br"),n("span",{staticClass:"line-number"},[s._v("31")]),n("br"),n("span",{staticClass:"line-number"},[s._v("32")]),n("br"),n("span",{staticClass:"line-number"},[s._v("33")]),n("br"),n("span",{staticClass:"line-number"},[s._v("34")]),n("br"),n("span",{staticClass:"line-number"},[s._v("35")]),n("br"),n("span",{staticClass:"line-number"},[s._v("36")]),n("br"),n("span",{staticClass:"line-number"},[s._v("37")]),n("br"),n("span",{staticClass:"line-number"},[s._v("38")]),n("br"),n("span",{staticClass:"line-number"},[s._v("39")]),n("br"),n("span",{staticClass:"line-number"},[s._v("40")]),n("br"),n("span",{staticClass:"line-number"},[s._v("41")]),n("br"),n("span",{staticClass:"line-number"},[s._v("42")]),n("br"),n("span",{staticClass:"line-number"},[s._v("43")]),n("br"),n("span",{staticClass:"line-number"},[s._v("44")]),n("br"),n("span",{staticClass:"line-number"},[s._v("45")]),n("br"),n("span",{staticClass:"line-number"},[s._v("46")]),n("br"),n("span",{staticClass:"line-number"},[s._v("47")]),n("br"),n("span",{staticClass:"line-number"},[s._v("48")]),n("br"),n("span",{staticClass:"line-number"},[s._v("49")]),n("br"),n("span",{staticClass:"line-number"},[s._v("50")]),n("br"),n("span",{staticClass:"line-number"},[s._v("51")]),n("br"),n("span",{staticClass:"line-number"},[s._v("52")]),n("br"),n("span",{staticClass:"line-number"},[s._v("53")]),n("br"),n("span",{staticClass:"line-number"},[s._v("54")]),n("br"),n("span",{staticClass:"line-number"},[s._v("55")]),n("br"),n("span",{staticClass:"line-number"},[s._v("56")]),n("br"),n("span",{staticClass:"line-number"},[s._v("57")]),n("br"),n("span",{staticClass:"line-number"},[s._v("58")]),n("br"),n("span",{staticClass:"line-number"},[s._v("59")]),n("br"),n("span",{staticClass:"line-number"},[s._v("60")]),n("br"),n("span",{staticClass:"line-number"},[s._v("61")]),n("br"),n("span",{staticClass:"line-number"},[s._v("62")]),n("br"),n("span",{staticClass:"line-number"},[s._v("63")]),n("br"),n("span",{staticClass:"line-number"},[s._v("64")]),n("br"),n("span",{staticClass:"line-number"},[s._v("65")]),n("br"),n("span",{staticClass:"line-number"},[s._v("66")]),n("br"),n("span",{staticClass:"line-number"},[s._v("67")]),n("br"),n("span",{staticClass:"line-number"},[s._v("68")]),n("br"),n("span",{staticClass:"line-number"},[s._v("69")]),n("br"),n("span",{staticClass:"line-number"},[s._v("70")]),n("br"),n("span",{staticClass:"line-number"},[s._v("71")]),n("br"),n("span",{staticClass:"line-number"},[s._v("72")]),n("br"),n("span",{staticClass:"line-number"},[s._v("73")]),n("br"),n("span",{staticClass:"line-number"},[s._v("74")]),n("br"),n("span",{staticClass:"line-number"},[s._v("75")]),n("br"),n("span",{staticClass:"line-number"},[s._v("76")]),n("br"),n("span",{staticClass:"line-number"},[s._v("77")]),n("br"),n("span",{staticClass:"line-number"},[s._v("78")]),n("br"),n("span",{staticClass:"line-number"},[s._v("79")]),n("br"),n("span",{staticClass:"line-number"},[s._v("80")]),n("br"),n("span",{staticClass:"line-number"},[s._v("81")]),n("br"),n("span",{staticClass:"line-number"},[s._v("82")]),n("br"),n("span",{staticClass:"line-number"},[s._v("83")]),n("br"),n("span",{staticClass:"line-number"},[s._v("84")]),n("br"),n("span",{staticClass:"line-number"},[s._v("85")]),n("br"),n("span",{staticClass:"line-number"},[s._v("86")]),n("br"),n("span",{staticClass:"line-number"},[s._v("87")]),n("br"),n("span",{staticClass:"line-number"},[s._v("88")]),n("br"),n("span",{staticClass:"line-number"},[s._v("89")]),n("br"),n("span",{staticClass:"line-number"},[s._v("90")]),n("br"),n("span",{staticClass:"line-number"},[s._v("91")]),n("br"),n("span",{staticClass:"line-number"},[s._v("92")]),n("br"),n("span",{staticClass:"line-number"},[s._v("93")]),n("br"),n("span",{staticClass:"line-number"},[s._v("94")]),n("br"),n("span",{staticClass:"line-number"},[s._v("95")]),n("br"),n("span",{staticClass:"line-number"},[s._v("96")]),n("br"),n("span",{staticClass:"line-number"},[s._v("97")]),n("br"),n("span",{staticClass:"line-number"},[s._v("98")]),n("br")])])]),s._v(" "),n("li",[n("p",[s._v("然后使用在"),n("code",[s._v("hoj-vue")]),s._v("目录下,使用"),n("code",[s._v("npm run build")]),s._v(",npm请自行百度下载安装,之后会生成一个dist文件夹,结构如下:")]),s._v(" "),n("div",{staticClass:"language- line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[s._v("dist\n├── index.html\n├── favicon.ico\n└── assets\n ├── css\n │ ├── ....\n ├── fonts\n │ ├── ....\n ├── img\n │ ├── ....\n ├── js\n │ ├── ....\n\n....\n....\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br"),n("span",{staticClass:"line-number"},[s._v("2")]),n("br"),n("span",{staticClass:"line-number"},[s._v("3")]),n("br"),n("span",{staticClass:"line-number"},[s._v("4")]),n("br"),n("span",{staticClass:"line-number"},[s._v("5")]),n("br"),n("span",{staticClass:"line-number"},[s._v("6")]),n("br"),n("span",{staticClass:"line-number"},[s._v("7")]),n("br"),n("span",{staticClass:"line-number"},[s._v("8")]),n("br"),n("span",{staticClass:"line-number"},[s._v("9")]),n("br"),n("span",{staticClass:"line-number"},[s._v("10")]),n("br"),n("span",{staticClass:"line-number"},[s._v("11")]),n("br"),n("span",{staticClass:"line-number"},[s._v("12")]),n("br"),n("span",{staticClass:"line-number"},[s._v("13")]),n("br"),n("span",{staticClass:"line-number"},[s._v("14")]),n("br"),n("span",{staticClass:"line-number"},[s._v("15")]),n("br")])]),n("p",[s._v("将 "),n("code",[s._v("dist")]),s._v(" 文件夹复制到服务器上某个目录下,比如 "),n("code",[s._v("/hoj/www/html/dist")]),s._v(",然后修改 "),n("code",[s._v("docker-compose.yml")]),s._v(",在 "),n("code",[s._v("hoj-frontend")]),s._v(" 模块中的 "),n("code",[s._v("volumes")]),s._v(" 中增加一行 "),n("code",[s._v("- /hoj/www/html/dist:/usr/share/nginx/html")]),s._v(" (冒号前面的请修改为实际的路径),然后 "),n("code",[s._v("docker-compose up -d")]),s._v(" 即可。")])])]),s._v(" "),n("h2",{attrs:{id:"二、全部打包但有个人cdn服务器"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#二、全部打包但有个人cdn服务器"}},[s._v("#")]),s._v(" 二、全部打包但有个人CDN服务器")]),s._v(" "),n("div",{staticClass:"custom-block info"},[n("p",{staticClass:"custom-block-title"},[s._v("Info")]),s._v(" "),n("p",[s._v("如果云服务器是只有固定小流量出口带宽的,例如1M,2M的,害怕访问速度太慢,但是有钱买CDN服务器,可以先按照上面的方式,生成对应的本地静态文件夹,然后把"),n("code",[s._v("dist/assets")]),s._v("文件夹放在CDN服务器上,然后修改"),n("code",[s._v("dist/index.html")])])]),s._v(" "),n("p",[n("strong",[s._v("(建议:有弄过CDN的可以这样搞)")])]),s._v(" "),n("p",[s._v("添加css等文件的导入")]),s._v(" "),n("div",{staticClass:"language-html line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-html"}},[n("code",[n("span",{pre:!0,attrs:{class:"token tag"}},[n("span",{pre:!0,attrs:{class:"token tag"}},[n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("link")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("href")]),n("span",{pre:!0,attrs:{class:"token attr-value"}},[n("span",{pre:!0,attrs:{class:"token punctuation attr-equals"}},[s._v("=")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("cdn服务器的地址/assets/css/文件名称.css"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),s._v(" "),n("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("rel")]),n("span",{pre:!0,attrs:{class:"token attr-value"}},[n("span",{pre:!0,attrs:{class:"token punctuation attr-equals"}},[s._v("=")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("prefetch"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br")])]),n("p",[s._v("添加js等文件的导入")]),s._v(" "),n("div",{staticClass:"language-html line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-html"}},[n("code",[n("span",{pre:!0,attrs:{class:"token tag"}},[n("span",{pre:!0,attrs:{class:"token tag"}},[n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("script")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("src")]),n("span",{pre:!0,attrs:{class:"token attr-value"}},[n("span",{pre:!0,attrs:{class:"token punctuation attr-equals"}},[s._v("=")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("cdn服务器的地址/assets/js/文件名称.js"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br")])]),n("div",{staticClass:"language- extra-class"},[n("pre",[n("code",[s._v("..............................\n")])])]),n("p",[s._v("将 "),n("code",[s._v("dist")]),s._v(" 文件夹复制到服务器上某个目录下,比如 "),n("code",[s._v("/hoj/www/html/dist")]),s._v(",然后修改 "),n("code",[s._v("docker-compose.yml")]),s._v(",在 "),n("code",[s._v("hoj-frontend")]),s._v(" 模块中的 "),n("code",[s._v("volumes")]),s._v(" 中增加一行 "),n("code",[s._v("- /hoj/www/html/dist:/usr/share/nginx/html")]),s._v(" (冒号前面的请修改为实际的路径),然后 "),n("code",[s._v("docker-compose up -d")]),s._v(" 即可。")])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-多个判题机.19902bec.js b/docs/docs/.vuepress/dist/assets/js/page-多个判题机.19902bec.js deleted file mode 100644 index 3d0b1e66..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-多个判题机.19902bec.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{513:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"多个判题机"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#多个判题机"}},[s._v("#")]),s._v(" 多个判题机")]),s._v(" "),t("h2",{attrs:{id:"前言"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#前言"}},[s._v("#")]),s._v(" 前言")]),s._v(" "),t("p",[s._v("不同判题机之间是通过rsync进行数据同步的,所以需要配置相应的rsync服务。")]),s._v(" "),t("p",[s._v("同时注意以下两点:")]),s._v(" "),t("ol",[t("li",[s._v("保证rsync-slave服务的密码与主服务rsync-master的数据同步密码一致")]),s._v(" "),t("li",[s._v("rsync-slave服务(判题机服务器)拉取主服务rsync-master的评测数据是每100s一次,所以后台上传评测数据后,需等待大概100s才能正常判题。")])]),s._v(" "),t("h2",{attrs:{id:"单体部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#单体部署"}},[s._v("#")]),s._v(" 单体部署")]),s._v(" "),t("p",[s._v("如果之前是选择了单体部署,也就是主服务器既有backend和judgeserver服务,那么部署更多不同服务器的判题机应该如下修改:")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("在原先运行的服务器上,修改"),t("code",[s._v("hoj-deploy/standAlone")]),s._v("文件夹里面的"),t("code",[s._v("docker-compose.yml")]),s._v(","),t("strong",[s._v("添加以下rsync-master服务")]),s._v(",数据同步密码请自行修改,如下:")]),s._v(" "),t("p",[t("strong",[s._v("(注意:如果云服务器有防火墙请开启8848,3306,873端口)")])]),s._v(" "),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-rsync-master")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1.0")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("rsync"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("master\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/hoj/testcase"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("ro\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_MODE=master\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_USER=hojrsync \n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" RSYNC_PASSWORD=hoj123456 "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请修改数据同步密码")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"0.0.0.0:873:873"')]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br")])]),t("p",[t("strong",[s._v("同时,需要将MySQL的配置"),t("code",[s._v("MYSQL_PUBLIC_HOST")]),s._v("改成当前服务器的公网IP")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" .env "),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改与docker-compose.yml同目录下的配置文件")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("div",{staticClass:"language-yaml line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-yaml"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\nMYSQL_HOST=172.20.0.3\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请提供当前mysql所在服务器的公网ip")]),s._v("\nMYSQL_PUBLIC_HOST="),t("span",{pre:!0,attrs:{class:"token important"}},[s._v("***")]),s._v("\nMYSQL_PORT=3306\nMYSQL_ROOT_PASSWORD=hoj123456\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("在其它服务器(判题机服务器)中使用docker-compose运行judgeserver服务,具体操作如下:")]),s._v(" "),t("p",[t("strong",[s._v("(注意:如果云服务器有防火墙请开启8088端口号,需要将判题服务暴露出去)")])]),s._v(" "),t("ol",[t("li",[t("p",[s._v("下载文件,进入到指定文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/distributed/judgeserver\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("修改配置"),t("code",[s._v(".env")]),s._v("文件,里面的nacos参数,judgeServer,rsync的参数请正确修改!")]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos所在服务的ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("NACOS_HOST")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos启动端口号,默认为8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos的管理员账号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos的管理员密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#修改为当前服务器公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_OPEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("true")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为(cpu核心数*2)*2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# rsync评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 写入主服务器ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("127.0.0.1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 与主服务器的rsync密码一致")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("启动即可")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("验证:")]),s._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[s._v("访问 http://ip:8088/version\n如果返回信息正常即启动成功!\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])])])])]),s._v(" "),t("h2",{attrs:{id:"分布式部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#分布式部署"}},[s._v("#")]),s._v(" 分布式部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("如果之前已经选择了分布式部署,那么增加判题机,则与原先启动判题机的操作一样即可,在新的服务器上操作如下:")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy/distributed/judgeserver\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" .env\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("修改"),t("code",[s._v(".env")]),s._v("的配置")]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos所在服务的ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("NACOS_HOST")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos启动端口号,默认为8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos的管理员账号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos的管理员密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#修改为当前服务器公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_OPEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("true")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为(cpu核心数*2)*2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# rsync评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 写入主服务器ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("127.0.0.1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 与主服务器的rsync密码一致")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("修改完保存,启动即可。")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-如何备份.a36f6bee.js b/docs/docs/.vuepress/dist/assets/js/page-如何备份.a36f6bee.js deleted file mode 100644 index 37b11edf..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-如何备份.a36f6bee.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{492:function(s,e,a){"use strict";a.r(e);var n=a(1),t=Object(n.a)({},(function(){var s=this,e=s.$createElement,a=s._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"如何备份"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何备份"}},[s._v("#")]),s._v(" 如何备份")]),s._v(" "),a("h3",{attrs:{id:"_1-单体部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-单体部署"}},[s._v("#")]),s._v(" 1. 单体部署")]),s._v(" "),a("p",[s._v("请到"),a("code",[s._v("~/hoj-deploy/standAlone")]),s._v("的目录下,即是与"),a("code",[s._v("docker-compose.yml")]),s._v("的文件同个目录下,该目录下有个叫"),a("code",[s._v("hoj")]),s._v("的文件夹,里面的文件夹介绍如下:")]),s._v(" "),a("div",{staticClass:"language-html line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[s._v("hoj\n├── file \t\t# 存储了上传的图片、上传的临时题目数据、markdown引用的文件等文件\n├── judge \t\t# 存储了每个提交题目的评测过程产生的数据\n├── log \t\t# 存储了hoj-backend项目的运行日志\n├── testcase # 存储了题目的评测数据\n└── data \n ├── mysql\n │ ├── data # 存储了MySQL数据库的数据\n ├── redis\n │ ├── data # 存储了redis产生的快照数据\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("p",[s._v("那么,如果需要备份,只需将该"),a("code",[s._v("hoj")]),s._v("文件夹复制一份即可,在新的机器上重新部署新的hoj的时候,将该文件夹放置与"),a("code",[s._v("docker-compose.yml")]),s._v("一个目录下,使用"),a("code",[s._v("docker-compose up -d")]),s._v("即可启动恢复原来的数据。")]),s._v(" "),a("h3",{attrs:{id:"_2-分布式部署"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-分布式部署"}},[s._v("#")]),s._v(" 2. 分布式部署")]),s._v(" "),a("ul",[a("li",[a("p",[s._v("主服务器(运行hoj-backend的服务器)")]),s._v(" "),a("p",[s._v("请到"),a("code",[s._v("~/hoj-deploy/distributed/main")]),s._v("的目录下,即是与"),a("code",[s._v("docker-compose.yml")]),s._v("的文件同个目录下,该目录下有个叫"),a("code",[s._v("hoj")]),s._v("的文件夹,里面的文件夹介绍如下:")]),s._v(" "),a("div",{staticClass:"language-html line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[s._v("hoj\n├── file \t\t# 存储了上传的图片、上传的临时题目数据、markdown引用的文件等文件\n├── log \t\t# 存储了hoj-backend项目的运行日志\n├── testcase # 存储了题目的评测数据\n└── data \n ├── mysql\n │ ├── data # 存储了MySQL数据库的数据\n ├── redis\n │ ├── data # 存储了redis产生的快照数据\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br")])])]),s._v(" "),a("li",[a("p",[s._v("判题服务器(运行hoj-judgeserver的服务器)")]),s._v(" "),a("p",[s._v("请到"),a("code",[s._v("~/hoj-deploy/distributed/judgeserver")]),s._v("的目录下,即是与"),a("code",[s._v("docker-compose.yml")]),s._v("的文件同个目录下,该目录下有个叫"),a("code",[s._v("judge")]),s._v("的文件夹,里面的文件夹介绍如下:")]),s._v(" "),a("div",{staticClass:"language-html line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[s._v("judge\n├── run \t\t# 存储了每个提交题目的评测过程产生的数据\n├── log \t\t# 存储了hoj-judgeserver项目的运行日志\n├── test_case # 存储了题目的评测数据(每100s从主服务器同步)\n├── spj # 存储了SPJ的代码\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br")])])])]),s._v(" "),a("p",[s._v("那么,主要要备份的还是"),a("strong",[s._v("主服务器")]),s._v("的数据,只需将该"),a("code",[s._v("hoj")]),s._v("文件夹复制一份即可,在新的机器上重新部署新的hoj的时候,将该文件夹放置与"),a("code",[s._v("docker-compose.yml")]),s._v("一个目录下,使用"),a("code",[s._v("docker-compose up -d")]),s._v("即可启动恢复原来的数据。")])])}),[],!1,null,null,null);e.default=t.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-如何更新.d14ef38a.js b/docs/docs/.vuepress/dist/assets/js/page-如何更新.d14ef38a.js deleted file mode 100644 index e1f67921..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-如何更新.d14ef38a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{512:function(s,t,a){"use strict";a.r(t);var e=a(1),n=Object(e.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"如何更新"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#如何更新"}},[s._v("#")]),s._v(" 如何更新")]),s._v(" "),a("h2",{attrs:{id:"一、无二次开发的更新"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、无二次开发的更新"}},[s._v("#")]),s._v(" 一、无二次开发的更新")]),s._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[s._v("Note")]),s._v(" "),a("p",[s._v("2021.09.21之后部署hoj的请看下面操作")])]),s._v(" "),a("p",[s._v("请在对应的docker-compose.yml当前文件夹下执行"),a("code",[s._v("docker-compose pull")]),s._v("拉取最新镜像,然后重新"),a("code",[s._v("docker-compose up -d")]),s._v("即可。")]),s._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[s._v("Note")]),s._v(" "),a("p",[s._v("2021.09.21之前部署hoj的请看下面操作")])]),s._v(" "),a("h3",{attrs:{id:"_1、修改mysql8-0默认的密码加密方式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1、修改mysql8-0默认的密码加密方式"}},[s._v("#")]),s._v(" 1、修改MySQL8.0默认的密码加密方式")]),s._v(" "),a("p",[s._v("(1)进行hoj-mysql容器")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("exec")]),s._v(" -it hoj-mysql "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("(2) 输入对应的mysql密码,进入mysql数据库")]),s._v(" "),a("p",[s._v("注意:-p 后面跟着数据库密码例如hoj123456")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("mysql -uroot -p数据库密码\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("(3)成功进入后,执行以下命令")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("mysql"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" use mysql"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\nmysql"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" grant all PRIVILEGES on *.* to root@"),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'%'")]),s._v(" WITH GRANT OPTION"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n \nmysql"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" ALTER user "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'root'")]),s._v("@"),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'%'")]),s._v(" IDENTIFIED BY "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'数据库密码'")]),s._v(" PASSWORD EXPIRE NEVER"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n \nmysql"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" ALTER user "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'root'")]),s._v("@"),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'%'")]),s._v(" IDENTIFIED WITH mysql_native_password BY "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'数据库密码'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n \nmysql"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" FLUSH PRIVILEGES"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br")])]),a("p",[s._v("(4) 两次exit 退出mysql和容器")]),s._v(" "),a("h3",{attrs:{id:"_2、-添加hoj-mysql-checker模块"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2、-添加hoj-mysql-checker模块"}},[s._v("#")]),s._v(" 2、 添加hoj-mysql-checker模块")]),s._v(" "),a("p",[s._v("(1)可以选择拉取仓库最新的docker-compose.yml文件(跟部署操作一样,但是会覆盖之前设置的参数)或者访问:")]),s._v(" "),a("p",[s._v("https://gitee.com/himitzh0730/hoj-deploy/blob/master/standAlone/docker-compose.yml")]),s._v(" "),a("p",[s._v("(2)或者编辑docker-compose.yml文件,手动添加新模块")]),s._v(" "),a("div",{staticClass:"language-yaml line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-mysql-checker")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_database_checker\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("checker\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("depends_on")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("links")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" hoj"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("mysql"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("mysql\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" MYSQL_ROOT_PASSWORD=$"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("MYSQL_ROOT_PASSWORD"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("hoj123456"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.8\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br")])]),a("p",[s._v("(3) 保存后重启容器即可")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v("docker-compose down\n\ndocker-compose pull\n\ndocker-compose up -d\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br")])]),a("p",[a("strong",[s._v("注意")]),s._v(":此次修改成功后,以后更新,都请在对应的docker-compose.yml当前文件夹下执行"),a("code",[s._v("docker-compose pull")]),s._v("拉取最新镜像,然后重新"),a("code",[s._v("docker-compose up -d")]),s._v("即可。")]),s._v(" "),a("h2",{attrs:{id:"二、自定义前端的更新"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、自定义前端的更新"}},[s._v("#")]),s._v(" 二、自定义前端的更新")]),s._v(" "),a("blockquote",[a("p",[s._v("附加:如何自定义前端请看这里 => "),a("RouterLink",{attrs:{to:"/use/update-fe.html"}},[s._v("自定义前端文档")])],1)]),s._v(" "),a("p",[s._v("(1)首先到"),a("code",[s._v("./hoj/hoj-vue")]),s._v("文件夹中,拉取"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("hoj-vue"),a("OutboundLink")],1),s._v("仓库最新的代码,请注意解决出现的冲突。")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" pull\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("或者重新直接download成zip包,然后重新自定义修改前端")]),s._v(" "),a("p",[s._v("当然,如果想查看对比主仓库更新的内容,可以用以下命令一步步合并")]),s._v(" "),a("div",{staticClass:"language-bash line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" remote -v "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 查看主仓库的远程仓库")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" fetch origin master:temp "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 将最新的主仓库代码拉到本地一个temp的分支")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("diff")]),s._v(" temp "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 比较现在本地代码与最新temp分支的区别")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" merge temp "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 合并temp分支到本地的master分支")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" branch -d temp "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 删除temp这个临时分支")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br")])]),a("p",[s._v("(2)接着,重新用npm打包,在"),a("code",[s._v("./hoj/hoj-vue/dist")]),s._v("文件夹会生成静态的前端文件,放到原来指定的位置即可")]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v(" run build\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br")])]),a("p",[s._v("(3)其它模块的更新,都请在对应的docker-compose.yml当前文件夹下执行"),a("code",[s._v("docker-compose pull")]),s._v("拉取最新镜像,然后重新"),a("code",[s._v("docker-compose up -d")]),s._v("即可。")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-安全沙盒的调用.69ddb02b.js b/docs/docs/.vuepress/dist/assets/js/page-安全沙盒的调用.69ddb02b.js deleted file mode 100644 index 98b8f1a0..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-安全沙盒的调用.69ddb02b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{496:function(s,t,a){"use strict";a.r(t);var n=a(1),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"安全沙盒的调用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安全沙盒的调用"}},[s._v("#")]),s._v(" 安全沙盒的调用")]),s._v(" "),a("blockquote",[a("p",[s._v("Judger-SandBox使用的是开源项目"),a("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),a("OutboundLink")],1),s._v("Linux版本的可执行文件,更多调用方式请自行浏览"),a("a",{attrs:{href:"https://github.com/criyle/go-judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("go-judge"),a("OutboundLink")],1)])]),s._v(" "),a("p",[s._v("HOJ用的是java来调用此沙盒,请看"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-springboot/JudgeServer/src/main/java/top/hcode/hoj/judge",target:"_blank",rel:"noopener noreferrer"}},[s._v("JudgeServer-judge"),a("OutboundLink")],1),s._v("下的SandboxRun.java")]),s._v(" "),a("p",[s._v("启动"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/blob/master/judger/Judger-SandBox",target:"_blank",rel:"noopener noreferrer"}},[s._v("Judger-SandBox"),a("OutboundLink")],1),s._v(",默认监听5050端口")]),s._v(" "),a("h4",{attrs:{id:"验证是否启动"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#验证是否启动"}},[s._v("#")]),s._v(" 验证是否启动")]),s._v(" "),a("p",[s._v("访问:"),a("code",[s._v("http://localhost:5050/version")])]),s._v(" "),a("h4",{attrs:{id:"编译"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#编译"}},[s._v("#")]),s._v(" 编译")]),s._v(" "),a("p",[s._v("1.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("1.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("1.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-shell line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-shell"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/g++"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"-o"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/bin:/bin"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"content"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000000")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("104857600")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"content"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"#include '),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("using namespace std;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("int main() {"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("int a, b;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("cin >> a >> b;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v("cout << a + b << endl;"),a("span",{pre:!0,attrs:{class:"token entity",title:"\\n"}},[s._v("\\n")]),s._v('}"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOutCached"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a.cc"')]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v(", \n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"copyOutDir"')]),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br")])]),a("p",[s._v("1.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("303225231")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("32243712")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("524177700")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"WDQL5TNLRRVB2KAP"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a.cc"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"NOHPGGDTYQUFRSLJ"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br")])]),a("h4",{attrs:{id:"运行与评测"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#运行与评测"}},[s._v("#")]),s._v(" 运行与评测")]),s._v(" "),a("p",[s._v("2.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("2.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("2.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/bin:/bin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1010/1.in"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10240")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("10000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"realCpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("30000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("104811111")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("50")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"a"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"WDQL5TNLRRVB2KAP"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br")])]),a("p",[s._v("2.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3171607")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("475136")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("110396333")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"23\\n"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br")])]),a("h4",{attrs:{id:"特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#特殊判题"}},[s._v("#")]),s._v(" 特殊判题")]),s._v(" "),a("p",[s._v("3.1 请求的url为")]),s._v(" "),a("blockquote",[a("p",[a("code",[s._v("http://localhost:5050/run")])])]),s._v(" "),a("p",[s._v("3.2 请求方式")]),s._v(" "),a("blockquote",[a("p",[s._v("POST")])]),s._v(" "),a("p",[s._v("3.3 请求参数")]),s._v(" "),a("blockquote",[a("p",[s._v("数据格式为json,内容如下")])]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"pipeMapping"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"in"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"index"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"out"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"index"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cmd"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"realCpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("9000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clockLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("64")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PYTHONIOENCODING=utf-8"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/usr/bin/python3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"main"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1002/5.in"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token null keyword"}},[s._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("536870912")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"main"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"CGTRDEMKW5VAYN6O"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stackLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("134217728")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"cpuLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("8000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"clockLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("24000000000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"env"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANG=en_US.UTF-8"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LANGUAGE=en_US:en"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"LC_ALL=en_US.UTF-8"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyOut"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"args"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/w/spj"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/w/tmp"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token null keyword"}},[s._v("null")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stdout"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"max"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("16777216")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"stderr"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("536870912")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"copyIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"spj"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/spj/1002/spj"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tmp"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"src"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"/judge/test_case/problem_1002/5.out"')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"procLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("64")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br"),a("span",{staticClass:"line-number"},[s._v("61")]),a("br"),a("span",{staticClass:"line-number"},[s._v("62")]),a("br"),a("span",{staticClass:"line-number"},[s._v("63")]),a("br"),a("span",{staticClass:"line-number"},[s._v("64")]),a("br"),a("span",{staticClass:"line-number"},[s._v("65")]),a("br"),a("span",{staticClass:"line-number"},[s._v("66")]),a("br"),a("span",{staticClass:"line-number"},[s._v("67")]),a("br"),a("span",{staticClass:"line-number"},[s._v("68")]),a("br"),a("span",{staticClass:"line-number"},[s._v("69")]),a("br"),a("span",{staticClass:"line-number"},[s._v("70")]),a("br"),a("span",{staticClass:"line-number"},[s._v("71")]),a("br"),a("span",{staticClass:"line-number"},[s._v("72")]),a("br"),a("span",{staticClass:"line-number"},[s._v("73")]),a("br"),a("span",{staticClass:"line-number"},[s._v("74")]),a("br"),a("span",{staticClass:"line-number"},[s._v("75")]),a("br"),a("span",{staticClass:"line-number"},[s._v("76")]),a("br"),a("span",{staticClass:"line-number"},[s._v("77")]),a("br"),a("span",{staticClass:"line-number"},[s._v("78")]),a("br"),a("span",{staticClass:"line-number"},[s._v("79")]),a("br"),a("span",{staticClass:"line-number"},[s._v("80")]),a("br"),a("span",{staticClass:"line-number"},[s._v("81")]),a("br"),a("span",{staticClass:"line-number"},[s._v("82")]),a("br"),a("span",{staticClass:"line-number"},[s._v("83")]),a("br"),a("span",{staticClass:"line-number"},[s._v("84")]),a("br"),a("span",{staticClass:"line-number"},[s._v("85")]),a("br"),a("span",{staticClass:"line-number"},[s._v("86")]),a("br"),a("span",{staticClass:"line-number"},[s._v("87")]),a("br"),a("span",{staticClass:"line-number"},[s._v("88")]),a("br"),a("span",{staticClass:"line-number"},[s._v("89")]),a("br"),a("span",{staticClass:"line-number"},[s._v("90")]),a("br"),a("span",{staticClass:"line-number"},[s._v("91")]),a("br")])]),a("p",[s._v("3.4 返回的数据为json格式")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1545123")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("253952")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("4148800")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"status"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Accepted"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"exitStatus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"time"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1501463")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memory"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("253952")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"runTime"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5897700")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"files"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stderr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"stdout"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"fileIds"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-导入用户.171a6c1d.js b/docs/docs/.vuepress/dist/assets/js/page-导入用户.171a6c1d.js deleted file mode 100644 index ae934d67..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-导入用户.171a6c1d.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{503:function(t,s,a){"use strict";a.r(s);var e=a(1),l=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h2",{attrs:{id:"导入用户"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#导入用户"}},[t._v("#")]),t._v(" 导入用户")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/338bf9db257844a1b32a4ff54c6528f6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),t._v(" "),a("p",[a("strong",[t._v("要求如下:")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Tips")]),t._v(" "),a("ol",[a("li",[t._v("用户数据导入仅支持csv格式的用户数据。")]),t._v(" "),a("li",[t._v("共七列数据:用户名和密码不能为空,邮箱、真实姓名、性别、昵称和学校可选填,否则该行数据可能导入失败。")]),t._v(" "),a("li",[t._v('第一行不必写(“用户名”,“密码”,“邮箱”,"真实姓名",“性别”,“昵称”,“学校”)这7个列名')]),t._v(" "),a("li",[t._v("性别为男请使用“male”或“0”,女请使用“female”或“1”,不填默认为“secrecy”。")]),t._v(" "),a("li",[t._v("请导入保存为UTF-8编码的文件,否则中文可能会乱码。")])])])])}),[],!1,null,null,null);s.default=l.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-开启HTTPS.299181cf.js b/docs/docs/.vuepress/dist/assets/js/page-开启HTTPS.299181cf.js deleted file mode 100644 index b6a344e9..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-开启HTTPS.299181cf.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{507:function(s,t,n){"use strict";n.r(t);var a=n(1),e=Object(a.a)({},(function(){var s=this,t=s.$createElement,n=s._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[n("h1",{attrs:{id:"开启https"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#开启https"}},[s._v("#")]),s._v(" 开启HTTPS")]),s._v(" "),n("ul",[n("li",[n("p",[s._v("单机部署:")]),s._v(" "),n("p",[s._v("提供server.crt和server.key证书与密钥文件放置"),n("code",[s._v("/standAlone")]),s._v("目录下,与"),n("code",[s._v("docker-compose.yml")]),s._v("和"),n("code",[s._v(".env")]),s._v("文件放置同一位置,然后修改"),n("code",[s._v("docker-compose.yml")]),s._v("中的hoj-frontend的配置")])]),s._v(" "),n("li",[n("p",[s._v("分布式部署:")]),s._v(" "),n("p",[s._v("提供server.crt和server.key证书与密钥文件放置"),n("code",[s._v("/distributed/main")]),s._v("目录下,与"),n("code",[s._v("docker-compose.yml")]),s._v("和"),n("code",[s._v(".env")]),s._v("文件放置同一位置,然后修改"),n("code",[s._v("docker-compose.yml")]),s._v("中的hoj-frontend的配置")])])]),s._v(" "),n("div",{staticClass:"language-yaml line-numbers-mode"},[n("pre",{pre:!0,attrs:{class:"language-yaml"}},[n("code",[n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-frontend")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("image")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" registry.cn"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("shenzhen.aliyuncs.com/hcode/hoj_frontend\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("container_name")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" hoj"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("frontend\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("restart")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" always\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启https,请提供证书")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("volumes")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./server.crt"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/etc/nginx/etc/crt/server.crt\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./server.key"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/etc/nginx/etc/crt/server.key\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改前端logo")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./logo.a0924d7d.png:/usr/share/nginx/html/assets/img/logo.a0924d7d.png")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# - ./backstage.8bce8c6e.png:/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("environment")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" SERVER_NAME=localhost "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 提供你的域名!!!!")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_HOST=$"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_HOST"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v("172.20.0.5"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务地址")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" BACKEND_SERVER_PORT=$"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("BACKEND_PORT"),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),n("span",{pre:!0,attrs:{class:"token number"}},[s._v("-6688")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务端口号")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" USE_HTTPS=true "),n("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 使用https请设置为true")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ports")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v('"80:80"')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" "),n("span",{pre:!0,attrs:{class:"token string"}},[s._v('"443:443"')]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("networks")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("hoj-network")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("\n "),n("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("ipv4_address")]),n("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" 172.20.0.6\n")])]),s._v(" "),n("div",{staticClass:"line-numbers-wrapper"},[n("span",{staticClass:"line-number"},[s._v("1")]),n("br"),n("span",{staticClass:"line-number"},[s._v("2")]),n("br"),n("span",{staticClass:"line-number"},[s._v("3")]),n("br"),n("span",{staticClass:"line-number"},[s._v("4")]),n("br"),n("span",{staticClass:"line-number"},[s._v("5")]),n("br"),n("span",{staticClass:"line-number"},[s._v("6")]),n("br"),n("span",{staticClass:"line-number"},[s._v("7")]),n("br"),n("span",{staticClass:"line-number"},[s._v("8")]),n("br"),n("span",{staticClass:"line-number"},[s._v("9")]),n("br"),n("span",{staticClass:"line-number"},[s._v("10")]),n("br"),n("span",{staticClass:"line-number"},[s._v("11")]),n("br"),n("span",{staticClass:"line-number"},[s._v("12")]),n("br"),n("span",{staticClass:"line-number"},[s._v("13")]),n("br"),n("span",{staticClass:"line-number"},[s._v("14")]),n("br"),n("span",{staticClass:"line-number"},[s._v("15")]),n("br"),n("span",{staticClass:"line-number"},[s._v("16")]),n("br"),n("span",{staticClass:"line-number"},[s._v("17")]),n("br"),n("span",{staticClass:"line-number"},[s._v("18")]),n("br"),n("span",{staticClass:"line-number"},[s._v("19")]),n("br"),n("span",{staticClass:"line-number"},[s._v("20")]),n("br"),n("span",{staticClass:"line-number"},[s._v("21")]),n("br"),n("span",{staticClass:"line-number"},[s._v("22")]),n("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-快速部署.2f57f65f.js b/docs/docs/.vuepress/dist/assets/js/page-快速部署.2f57f65f.js deleted file mode 100644 index 43bbdb62..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-快速部署.2f57f65f.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{502:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"快速部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#快速部署"}},[s._v("#")]),s._v(" 快速部署")]),s._v(" "),t("p",[t("strong",[s._v("前提:已经在上一步准备好docker与docker-compose")])]),s._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[s._v("Warning")]),s._v(" "),t("p",[s._v("注意:如果正式部署运用HOJ,请修改默认配置的密码,例如Redis、MySQL、Nacos的密码!!!"),t("br"),s._v(" "),t("strong",[s._v("使用默认密码可能会导致数据泄露,网站及其不安全!")])])]),s._v(" "),t("h2",{attrs:{id:"一、单机部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、单机部署"}},[s._v("#")]),s._v(" 一、单机部署")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("选择好需要安装的位置,运行下面命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("进入文件夹,使用docker-compose启动各容器服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" standAlone\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("standAlone")]),s._v("文件夹文件有以下:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── docker-compose.yml\n├── .env\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("p",[s._v("主要配置请修改"),t("code",[s._v(".env")]),s._v("文件,内容如下:")]),s._v(" "),t("blockquote",[t("p",[s._v("注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network")])]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj全部数据存储的文件夹位置(默认当前路径生成hoj文件夹)")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HOJ_DATA_DIRECTORY")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("./hoj")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# redis的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6379")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PUBLIC_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("3306")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.4")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.5")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6688")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token加密秘钥 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_SECRET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token过期时间默认为24小时 86400s")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("86400")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token默认12小时可自动刷新")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_FRESH_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("43200")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_TOKEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的域名或ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("smtp.qq.com")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("465")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_username")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_password")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("POJ_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("POJ_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-alone")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v(" # docker network的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v(" SUBNET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.0/16")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br"),t("span",{staticClass:"line-number"},[s._v("54")]),t("br")])])])]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),t("p",[s._v("提示:如果服务器的内存在4G或4G以上,请去掉JVM限制才能大大提高并发量,操作如下:")])]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" docker-compose.yml\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("注释或去掉图中选中的行")])]),s._v(" "),t("p",[s._v("① hoj-backend模块")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://img-blog.csdnimg.cn/4dfdcb2461c742f1b3717a8a27c3598a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center",alt:"在这里插入图片描述"}})]),s._v(" "),t("p",[s._v("② hoj-judgeserver模块")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://img-blog.csdnimg.cn/9a936ad86ff2439a9e1188c286cfd751.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),s._v(" "),t("p",[s._v("如果不改动,则以默认参数启动("),t("strong",[s._v("测试可以不改,但正式部署请修改默认配置的密码!")]),s._v(")")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("strong",[s._v("根据网速情况,大约十到二十分钟拉取镜像,全程无需人工干预,拉取完毕后,自动启动容器服务,大概需要一至两分钟的初始化。")])]),s._v(" "),t("p",[s._v("等待命令执行完毕后,查看容器状态")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" -a\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当看到所有的容器的状态status都为"),t("code",[s._v("UP")]),s._v("或"),t("code",[s._v("healthy")]),s._v("就代表 OJ 已经启动成功。")]),s._v(" "),t("p",[s._v("以下默认参数说明")]),s._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[s._v("Note")]),s._v(" "),t("ul",[t("li",[s._v("默认超级管理员账号与密码:root / hoj123456")]),s._v(" "),t("li",[s._v("默认redis密码:hoj123456("),t("strong",[s._v("正式部署请修改")]),s._v(")")]),s._v(" "),t("li",[s._v("默认mysql账号与密码:root / hoj123456("),t("strong",[s._v("正式部署请修改")]),s._v(")")]),s._v(" "),t("li",[s._v("默认nacos管理员账号与密码:root / hoj123456("),t("strong",[s._v("正式部署请修改")]),s._v(")")]),s._v(" "),t("li",[s._v("默认不开启https,开启需修改文件同时提供证书文件")]),s._v(" "),t("li",[s._v("判题并发数默认:cpu核心数+1")]),s._v(" "),t("li",[s._v("默认开启vj判题,需要手动修改添加账号与密码,如果不添加不能vj判题!")]),s._v(" "),t("li",[s._v("vj判题并发数默认:cpu核心数*2+1")])])]),s._v(" "),t("p",[t("strong",[s._v("登录root账号到后台查看服务状态以及到"),t("code",[s._v("http://ip/admin/conf")]),s._v("修改服务配置!")])]),s._v(" "),t("p",[t("u",[s._v("注意:网站的注册及用户账号相关操作需要邮件系统,所以请在系统配置中配置自己的SMTP邮件服务。")])]),s._v(" "),t("p",[t("strong",[s._v("(如果已经在启动在.env文件配置了邮件服务即不用再次修改)")])]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("Host: smtp.qq.com\nPort: "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("465")]),s._v("\nUsername: qq邮箱账号\nPassword: 开启SMTP服务后生成的随机授权码\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("h2",{attrs:{id:"二、分布式部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、分布式部署"}},[s._v("#")]),s._v(" 二、分布式部署")]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),t("p",[s._v("主服务器(运行nacos,backend, frontend,redis)的服务器防火墙请开 "),t("strong",[s._v("8848,3306,873")]),s._v("端口号"),t("br"),s._v("\n从服务器(运行judgeserver)的服务器防火墙请开"),t("strong",[s._v("8088")]),s._v("端口号")])]),s._v(" "),t("ol",[t("li",[t("p",[s._v("选择好需要安装的位置,运行下面命令")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" clone https://gitee.com/himitzh0730/hoj-deploy.git "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" hoj-deploy\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("进入文件夹")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" distributed\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[t("code",[s._v("distributed")]),s._v("文件夹有以下:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── judgeserver\n├── main\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("首先部署主服务,即是数据后台服务(DataBackup)")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" main\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("该文件夹下有:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── docker-compose.yml\n├── .env\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])]),t("p",[s._v("修改"),t("code",[s._v(".env")]),s._v("文件中的配置")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" .env\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("blockquote",[t("p",[s._v("注意:各服务ip最好不改动,保持处于172.20.0.0/16网段的docker network")])]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj全部数据存储的文件夹位置(默认当前路径生成hoj文件夹)")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HOJ_DATA_DIRECTORY")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("./hoj")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# redis的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6379")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REDIS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# mysql的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请提供当前mysql所在服务器的公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PUBLIC_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.3")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("3306")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MYSQL_ROOT_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.4")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# backend后端服务的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.5")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("BACKEND_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("6688")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token加密秘钥 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_SECRET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token过期时间默认为24小时 86400s")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("86400")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# token默认12小时可自动刷新")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JWT_TOKEN_FRESH_EXPIRE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("43200")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 调用判题服务器的token 默认则生成32位随机密钥")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_TOKEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("default")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请使用邮件服务的域名或ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("smtp.qq.com")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("465")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_username")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("EMAIL_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("your_email_password")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 开启虚拟判题请提供对应oj的账号密码 格式为 ")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# username1,username2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# password1,password2,...")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("username1,username2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HDU_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("password1,password2")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("CF_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("POJ_ACCOUNT_USERNAME_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("POJ_ACCOUNT_PASSWORD_LIST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 请修改数据同步密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 # 正式部署请修改")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# docker network的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("SUBNET")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.0/16")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br"),t("span",{staticClass:"line-number"},[s._v("31")]),t("br"),t("span",{staticClass:"line-number"},[s._v("32")]),t("br"),t("span",{staticClass:"line-number"},[s._v("33")]),t("br"),t("span",{staticClass:"line-number"},[s._v("34")]),t("br"),t("span",{staticClass:"line-number"},[s._v("35")]),t("br"),t("span",{staticClass:"line-number"},[s._v("36")]),t("br"),t("span",{staticClass:"line-number"},[s._v("37")]),t("br"),t("span",{staticClass:"line-number"},[s._v("38")]),t("br"),t("span",{staticClass:"line-number"},[s._v("39")]),t("br"),t("span",{staticClass:"line-number"},[s._v("40")]),t("br"),t("span",{staticClass:"line-number"},[s._v("41")]),t("br"),t("span",{staticClass:"line-number"},[s._v("42")]),t("br"),t("span",{staticClass:"line-number"},[s._v("43")]),t("br"),t("span",{staticClass:"line-number"},[s._v("44")]),t("br"),t("span",{staticClass:"line-number"},[s._v("45")]),t("br"),t("span",{staticClass:"line-number"},[s._v("46")]),t("br"),t("span",{staticClass:"line-number"},[s._v("47")]),t("br"),t("span",{staticClass:"line-number"},[s._v("48")]),t("br"),t("span",{staticClass:"line-number"},[s._v("49")]),t("br"),t("span",{staticClass:"line-number"},[s._v("50")]),t("br"),t("span",{staticClass:"line-number"},[s._v("51")]),t("br"),t("span",{staticClass:"line-number"},[s._v("52")]),t("br"),t("span",{staticClass:"line-number"},[s._v("53")]),t("br")])]),t("p",[s._v("配置修改保存后,当前路径下启动该服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("根据网速情况,大约十分钟即可安装完毕,全程无需人工干预。")]),s._v(" "),t("p",[s._v("等待命令执行完毕后,查看容器状态")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("ps")]),s._v(" -a\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("p",[s._v("当看到所有的容器的状态status都为"),t("code",[s._v("UP")]),s._v("或"),t("code",[s._v("healthy")]),s._v("就代表 OJ 已经启动成功。")])]),s._v(" "),t("li",[t("p",[s._v("接着,在另一台服务器上,依旧git clone该文件夹下来,然后进入"),t("code",[s._v("judgeserver")]),s._v("文件夹,修改"),t("code",[s._v(".env")]),s._v("的配置")]),s._v(" "),t("div",{staticClass:"language-properties line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-properties"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# hoj全部数据存储的文件夹位置(默认当前路径生成judge文件夹)")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("HOJ_JUDGESERVER_DATA_DIRECTORY")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("./judge")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# nacos的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos所在服务的ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("NACOS_HOST")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos启动端口号,默认为8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8848")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos的管理员账号")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_USERNAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("root")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 修改为nacos的管理员密码")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("NACOS_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# judgeserver的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("#修改服务器公网ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_IP")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("172.20.0.7")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_PORT")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("8088")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("JUDGE_SERVER_NAME")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("judger-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数+1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 当前判题服务器是否开启远程虚拟判题功能")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_OPEN")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("true")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# -1表示最大并行任务数为cpu核心数*2+1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("REMOTE_JUDGE_MAX_TASK_NUM")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("-1")]),s._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# rsync评测数据同步的配置")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 写入主服务器ip")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_MASTER_ADDR")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("127.0.0.1")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 与主服务器的rsync密码一致")]),s._v("\n"),t("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("RSYNC_PASSWORD")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),t("span",{pre:!0,attrs:{class:"token attr-value"}},[s._v("hoj123456 ")]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br"),t("span",{staticClass:"line-number"},[s._v("7")]),t("br"),t("span",{staticClass:"line-number"},[s._v("8")]),t("br"),t("span",{staticClass:"line-number"},[s._v("9")]),t("br"),t("span",{staticClass:"line-number"},[s._v("10")]),t("br"),t("span",{staticClass:"line-number"},[s._v("11")]),t("br"),t("span",{staticClass:"line-number"},[s._v("12")]),t("br"),t("span",{staticClass:"line-number"},[s._v("13")]),t("br"),t("span",{staticClass:"line-number"},[s._v("14")]),t("br"),t("span",{staticClass:"line-number"},[s._v("15")]),t("br"),t("span",{staticClass:"line-number"},[s._v("16")]),t("br"),t("span",{staticClass:"line-number"},[s._v("17")]),t("br"),t("span",{staticClass:"line-number"},[s._v("18")]),t("br"),t("span",{staticClass:"line-number"},[s._v("19")]),t("br"),t("span",{staticClass:"line-number"},[s._v("20")]),t("br"),t("span",{staticClass:"line-number"},[s._v("21")]),t("br"),t("span",{staticClass:"line-number"},[s._v("22")]),t("br"),t("span",{staticClass:"line-number"},[s._v("23")]),t("br"),t("span",{staticClass:"line-number"},[s._v("24")]),t("br"),t("span",{staticClass:"line-number"},[s._v("25")]),t("br"),t("span",{staticClass:"line-number"},[s._v("26")]),t("br"),t("span",{staticClass:"line-number"},[s._v("27")]),t("br"),t("span",{staticClass:"line-number"},[s._v("28")]),t("br"),t("span",{staticClass:"line-number"},[s._v("29")]),t("br"),t("span",{staticClass:"line-number"},[s._v("30")]),t("br")])]),t("p",[s._v("配置修改保存后,当前路径下启动该服务")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[s._v("docker-compose up -d\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])]),t("blockquote",[t("p",[s._v("提示:需要开启多台判题机,就如当前第4步的操作一样,在每台服务器上执行以上的操作即可。")])])]),s._v(" "),t("li",[t("p",[s._v("两个服务都启动完成,在浏览器输入主服务ip或域名进行访问,登录root账号到后台查看服务状态。")])])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-数据库说明.becfd7e6.js b/docs/docs/.vuepress/dist/assets/js/page-数据库说明.becfd7e6.js deleted file mode 100644 index ea862760..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-数据库说明.becfd7e6.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{494:function(_,t,v){"use strict";v.r(t);var d=v(1),r=Object(d.a)({},(function(){var _=this,t=_.$createElement,v=_._self._c||t;return v("ContentSlotsDistributor",{attrs:{"slot-key":_.$parent.slotKey}},[v("h1",{attrs:{id:"数据库说明"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#数据库说明"}},[_._v("#")]),_._v(" 数据库说明")]),_._v(" "),v("h2",{attrs:{id:"用户资料模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#用户资料模块"}},[_._v("#")]),_._v(" 用户资料模块")]),_._v(" "),v("p",[_._v("user_info表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("uuid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("uuid用户id")])]),_._v(" "),v("tr",[v("td",[_._v("username")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("登录账号")])]),_._v(" "),v("tr",[v("td",[_._v("password")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("登录密码")])]),_._v(" "),v("tr",[v("td",[_._v("nickname")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("用户昵称")])]),_._v(" "),v("tr",[v("td",[_._v("school")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("学校")])]),_._v(" "),v("tr",[v("td",[_._v("course")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("专业")])]),_._v(" "),v("tr",[v("td",[_._v("number")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("学号")])]),_._v(" "),v("tr",[v("td",[_._v("realname")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("真实名字")])]),_._v(" "),v("tr",[v("td",[_._v("email")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("邮箱")])]),_._v(" "),v("tr",[v("td",[_._v("gender")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("性别")])]),_._v(" "),v("tr",[v("td",[_._v("avatar")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("头像图片地址")])]),_._v(" "),v("tr",[v("td",[_._v("signature")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("个性签名")])]),_._v(" "),v("tr",[v("td",[_._v("cf_username")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("codeforces的username")])]),_._v(" "),v("tr",[v("td",[_._v("blog")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("博客地址")])]),_._v(" "),v("tr",[v("td",[_._v("github")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("github地址")])]),_._v(" "),v("tr",[v("td",[_._v("title_name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("称号、头衔")])]),_._v(" "),v("tr",[v("td",[_._v("title_color")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("称号、头衔的背景颜色")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("0可用,1不可用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("session表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("user_agent")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("访问的浏览器参数")])]),_._v(" "),v("tr",[v("td",[_._v("ip")]),_._v(" "),v("td",[_._v("Srting")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("访问所在的ip")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("role 角色表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("role")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("“admin”,”tourist”,“user”")])]),_._v(" "),v("tr",[v("td",[_._v("description")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("角色描述")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否可用,0可用 1不可用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("user_role表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("role_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("角色id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("auth权限表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("权限名称,“superadmin”,”contest”,“admin”,”common” 普通用户默认为“common”")])]),_._v(" "),v("tr",[v("td",[_._v("permission")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("权限字符串,例如“contest:1001”,发布某场比赛。 “all”,”select”,”update”等等,")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("0可用,1不可用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("role_auth表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("role_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("角色id")])]),_._v(" "),v("tr",[v("td",[_._v("auth_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("权限id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("user_record表 个人做题记录表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("primary key")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("rating")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("Cf得分,未参加过默认为1500")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("user_acproblem表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("primary key")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("Ac的题目id")])]),_._v(" "),v("tr",[v("td",[_._v("subimit_id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("提交的id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"题目详情模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#题目详情模块"}},[_._v("#")]),_._v(" 题目详情模块")]),_._v(" "),v("p",[_._v("problem表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("primary key")]),_._v(" "),v("td",[_._v("auto_increment 1000开始")])]),_._v(" "),v("tr",[v("td",[_._v("problem_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目展示id")])]),_._v(" "),v("tr",[v("td",[_._v("title")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目标题")])]),_._v(" "),v("tr",[v("td",[_._v("author")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("默认可为无")])]),_._v(" "),v("tr",[v("td",[_._v("type")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目类型 0为ACM,1为OI")])]),_._v(" "),v("tr",[v("td",[_._v("time_limit")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("时间限制(ms),默认为c/c++限制,其它语言为2倍")])]),_._v(" "),v("tr",[v("td",[_._v("memory_limit")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("空间限制(mb),默认为c/c++限制,其它语言为2倍")])]),_._v(" "),v("tr",[v("td",[_._v("stack_limit")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("栈限制(mb),默认为128")])]),_._v(" "),v("tr",[v("td",[_._v("description")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("内容描述")])]),_._v(" "),v("tr",[v("td",[_._v("input")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("输入描述")])]),_._v(" "),v("tr",[v("td",[_._v("output")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("输出描述")])]),_._v(" "),v("tr",[v("td",[_._v("examples")]),_._v(" "),v("td",[_._v("Srting")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题面输入输出样例,不纳入评测数据")])]),_._v(" "),v("tr",[v("td",[_._v("source")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目来源(比赛id),默认为hoj,可能为爬虫vj")])]),_._v(" "),v("tr",[v("td",[_._v("difficulty")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目难度,0简单,1中等,2困难")])]),_._v(" "),v("tr",[v("td",[_._v("hint")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("备注 提醒")])]),_._v(" "),v("tr",[v("td",[_._v("auth")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("默认为1公开,2为私有,3为比赛中。")])]),_._v(" "),v("tr",[v("td",[_._v("io_score")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("当该题目为io题目时的分数 默认为100")])]),_._v(" "),v("tr",[v("td",[_._v("code_share")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("该题目对应的相关提交代码,用户是否可用分享")])]),_._v(" "),v("tr",[v("td",[_._v("spj_code")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("特判程序代码 空代表非特判")])]),_._v(" "),v("tr",[v("td",[_._v("spj_language")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("特判程序的语言")])]),_._v(" "),v("tr",[v("td",[_._v("is_remove_end_blank")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否默认去除用户代码的文末空格")])]),_._v(" "),v("tr",[v("td",[_._v("open_case_result")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否默认开启该题目的测试样例结果查看")])]),_._v(" "),v("tr",[v("td",[_._v("caseVersion")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目测试数据的版本号")])]),_._v(" "),v("tr",[v("td",[_._v("is_upload_case")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否是上传zip评测数据的")])]),_._v(" "),v("tr",[v("td",[_._v("modified_user")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("最新修改题目的用户")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("problem_case表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("primary key")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("input")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("测试样例的输入文件名")])]),_._v(" "),v("tr",[v("td",[_._v("output")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("测试样例的输出文件名")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("状态0可用,1不可用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("tag表 题目表的标签")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("标签名字")])]),_._v(" "),v("tr",[v("td",[_._v("color")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("标签颜色")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("problem_tag表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("主键id")])]),_._v(" "),v("tr",[v("td",[_._v("tid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("标签id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("language表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("主键id")])]),_._v(" "),v("tr",[v("td",[_._v("content_type")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("语言类型")])]),_._v(" "),v("tr",[v("td",[_._v("description")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("语言描述")])]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("语言名字")])]),_._v(" "),v("tr",[v("td",[_._v("compile_command")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("编译指令")])]),_._v(" "),v("tr",[v("td",[_._v("template")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("A+B题目模板")])]),_._v(" "),v("tr",[v("td",[_._v("code_template")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("语言对应的代码模板")])]),_._v(" "),v("tr",[v("td",[_._v("is_spj")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否可作为特殊判题的一种语言")])]),_._v(" "),v("tr",[v("td",[_._v("oj")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("该语言属于哪个oj,自身oj用ME")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("code_template表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("主键id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("lid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("语言id")])]),_._v(" "),v("tr",[v("td",[_._v("code")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("代码模板")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否启用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"提交评测模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#提交评测模块"}},[_._v("#")]),_._v(" 提交评测模块")]),_._v(" "),v("blockquote",[v("p",[_._v("判题结果status")])]),_._v(" "),v("p",[_._v("未提交:STATUS_NOT_SUBMITTED = -10")]),_._v(" "),v("p",[_._v("提交中:STATUS_SUBMITTING = 9")]),_._v(" "),v("p",[_._v("排队中:STATUS_PENDING = 6")]),_._v(" "),v("p",[_._v("评测中:STATUS_JUDGING = 7")]),_._v(" "),v("p",[_._v("编译错误:STATUS_COMPILE_ERROR = -2")]),_._v(" "),v("p",[_._v("输出格式错误:STATUS_PRESENTATION_ERROR = -3")]),_._v(" "),v("p",[_._v("答案错误:STATUS__WRONG_ANSWER = -1")]),_._v(" "),v("p",[_._v("评测通过:STATUS_ACCEPTED = 0")]),_._v(" "),v("p",[_._v("cpu时间超限:STATUS__CPU_TIME_LIMIT_EXCEEDED = 1")]),_._v(" "),v("p",[_._v("真实时间超限:STATUS__REAL_TIME_LIMIT_EXCEEDED = 2")]),_._v(" "),v("p",[_._v("空间超限:STATUS__MEMORY_LIMIT_EXCEEDED = 3")]),_._v(" "),v("p",[_._v("运行错误:STATUS__RUNTIME_ERROR = 4")]),_._v(" "),v("p",[_._v("系统错误:STATUS__SYSTEM_ERROR = 5")]),_._v(" "),v("p",[_._v("OI评测部分通过:STATUS_PARTIAL_ACCEPTED = 8")]),_._v(" "),v("p",[_._v("提交失败:STATUS_SUBMITTED_FAILED= 10")]),_._v(" "),v("p",[_._v("judge表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("submit_id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("primary key")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("display_pid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目展示id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("提交用户的id")])]),_._v(" "),v("tr",[v("td",[_._v("username")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户名")])]),_._v(" "),v("tr",[v("td",[_._v("submit_time")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("提交时间")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题结果")])]),_._v(" "),v("tr",[v("td",[_._v("share")]),_._v(" "),v("td",[_._v("Boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("代码是否分享")])]),_._v(" "),v("tr",[v("td",[_._v("error_message")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("错误提醒(编译错误,或者vj提醒)")])]),_._v(" "),v("tr",[v("td",[_._v("time")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("运行时间")])]),_._v(" "),v("tr",[v("td",[_._v("memory")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("所耗内存")])]),_._v(" "),v("tr",[v("td",[_._v("length")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("代码长度")])]),_._v(" "),v("tr",[v("td",[_._v("code")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("代码")])]),_._v(" "),v("tr",[v("td",[_._v("language")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("代码语言")])]),_._v(" "),v("tr",[v("td",[_._v("cpid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛中的题目编号id")])]),_._v(" "),v("tr",[v("td",[_._v("judger")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题机ip")])]),_._v(" "),v("tr",[v("td",[_._v("ip")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("提交者ip")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("题目来源的比赛id,默认为0")])]),_._v(" "),v("tr",[v("td",[_._v("version")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("乐观锁(废弃)")])]),_._v(" "),v("tr",[v("td",[_._v("oi_rank_score")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("oi排行榜得分")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("jugde_case表 评测单个样例结果表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("submit_id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("提交id")])]),_._v(" "),v("tr",[v("td",[_._v("problemId")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("userId")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("提交用户的id")])]),_._v(" "),v("tr",[v("td",[_._v("Status")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("单个样例评测结果")])]),_._v(" "),v("tr",[v("td",[_._v("time")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("运行时间")])]),_._v(" "),v("tr",[v("td",[_._v("memory")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("运行内存")])]),_._v(" "),v("tr",[v("td",[_._v("case_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("测试样例id")])]),_._v(" "),v("tr",[v("td",[_._v("input_data")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("样例输入的文件名")])]),_._v(" "),v("tr",[v("td",[_._v("Output_data")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("样例输出的文件名")])]),_._v(" "),v("tr",[v("td",[_._v("user_output")]),_._v(" "),v("td",[_._v("Srting")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("暂时用作信息提示")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"比赛模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#比赛模块"}},[_._v("#")]),_._v(" 比赛模块")]),_._v(" "),v("p",[_._v("更新比赛状态的存储过程")]),_._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DELIMITER")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("|")]),_._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DROP")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("PROCEDURE")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("IF")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("EXISTS")]),_._v(" contest_status "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("|")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("CREATE")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("PROCEDURE")]),_._v(" contest_status"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v("\n\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("BEGIN")]),_._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("UPDATE")]),_._v(" contest \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("SET")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("STATUS")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("=")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),_._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("CASE")]),_._v(" \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("WHEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("<")]),_._v(" start_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("THEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("-")]),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("1")]),_._v(" \n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("WHEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v(">=")]),_._v(" start_time "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("AND")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("<")]),_._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("THEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("0")]),_._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("WHEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v(">=")]),_._v(" end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("THEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("1")]),_._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("END")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v("\n "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("END")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("|")]),_._v("\n\n")])]),_._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[_._v("1")]),v("br"),v("span",{staticClass:"line-number"},[_._v("2")]),v("br"),v("span",{staticClass:"line-number"},[_._v("3")]),v("br"),v("span",{staticClass:"line-number"},[_._v("4")]),v("br"),v("span",{staticClass:"line-number"},[_._v("5")]),v("br"),v("span",{staticClass:"line-number"},[_._v("6")]),v("br"),v("span",{staticClass:"line-number"},[_._v("7")]),v("br"),v("span",{staticClass:"line-number"},[_._v("8")]),v("br"),v("span",{staticClass:"line-number"},[_._v("9")]),v("br"),v("span",{staticClass:"line-number"},[_._v("10")]),v("br"),v("span",{staticClass:"line-number"},[_._v("11")]),v("br"),v("span",{staticClass:"line-number"},[_._v("12")]),v("br"),v("span",{staticClass:"line-number"},[_._v("13")]),v("br"),v("span",{staticClass:"line-number"},[_._v("14")]),v("br"),v("span",{staticClass:"line-number"},[_._v("15")]),v("br"),v("span",{staticClass:"line-number"},[_._v("16")]),v("br")])]),v("p",[_._v("创建插入时的触发器")]),_._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DROP")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("TRIGGER")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("IF")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("EXISTS")]),_._v(" contest_trigger"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DELIMITER")]),_._v(" $$\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("CREATE")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("TRIGGER")]),_._v(" contest_trigger\nBEFORE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("INSERT")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ON")]),_._v(" contest "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("FOR EACH ROW")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("BEGIN")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("SET")]),_._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(".")]),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("status")]),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("=")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),_._v("\n\t"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("CASE")]),_._v(" \n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("WHEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("<")]),_._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(".")]),_._v("start_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("THEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("-")]),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("1")]),_._v(" \n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("WHEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v(">=")]),_._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(".")]),_._v("start_time "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("AND")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("<")]),_._v("new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(".")]),_._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("THEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("0")]),_._v("\n\t "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("WHEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token function"}},[_._v("NOW")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v(">=")]),_._v(" new"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(".")]),_._v("end_time "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("THEN")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("1")]),_._v("\n\t"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("END")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("END")]),_._v("$$\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DELIMITER")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v("\n")])]),_._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[_._v("1")]),v("br"),v("span",{staticClass:"line-number"},[_._v("2")]),v("br"),v("span",{staticClass:"line-number"},[_._v("3")]),v("br"),v("span",{staticClass:"line-number"},[_._v("4")]),v("br"),v("span",{staticClass:"line-number"},[_._v("5")]),v("br"),v("span",{staticClass:"line-number"},[_._v("6")]),v("br"),v("span",{staticClass:"line-number"},[_._v("7")]),v("br"),v("span",{staticClass:"line-number"},[_._v("8")]),v("br"),v("span",{staticClass:"line-number"},[_._v("9")]),v("br"),v("span",{staticClass:"line-number"},[_._v("10")]),v("br"),v("span",{staticClass:"line-number"},[_._v("11")]),v("br"),v("span",{staticClass:"line-number"},[_._v("12")]),v("br"),v("span",{staticClass:"line-number"},[_._v("13")]),v("br"),v("span",{staticClass:"line-number"},[_._v("14")]),v("br")])]),v("p",[_._v("设置定时器")]),_._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("SET")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("GLOBAL")]),_._v(" event_scheduler "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("=")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("1")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[_._v("// 开启定时器")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("CREATE")]),_._v(" EVENT "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("IF")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token operator"}},[_._v("NOT")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("EXISTS")]),_._v(" contest_event\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ON")]),_._v(" SCHEDULE EVERY "),v("span",{pre:!0,attrs:{class:"token number"}},[_._v("1")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("SECOND")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[_._v("// 每秒执行一次")]),_._v("\n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ON")]),_._v(" COMPLETION PRESERVE \n\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DO")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("CALL")]),_._v(" contest_status"),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v("(")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(")")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[_._v("// 调用存储过程")]),_._v("\n")])]),_._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[_._v("1")]),v("br"),v("span",{staticClass:"line-number"},[_._v("2")]),v("br"),v("span",{staticClass:"line-number"},[_._v("3")]),v("br"),v("span",{staticClass:"line-number"},[_._v("4")]),v("br"),v("span",{staticClass:"line-number"},[_._v("5")]),v("br"),v("span",{staticClass:"line-number"},[_._v("6")]),v("br"),v("span",{staticClass:"line-number"},[_._v("7")]),v("br"),v("span",{staticClass:"line-number"},[_._v("8")]),v("br")])]),v("p",[_._v("开启或关闭定时器")]),_._v(" "),v("div",{staticClass:"language-sql line-numbers-mode"},[v("pre",{pre:!0,attrs:{class:"language-sql"}},[v("code",[v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ALTER")]),_._v(" EVENT contest_event "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ON")]),_._v(" COMPLETION PRESERVE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ENABLE")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[_._v("-- 开启事件")]),_._v("\n"),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ALTER")]),_._v(" EVENT contest_event "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("ON")]),_._v(" COMPLETION PRESERVE "),v("span",{pre:!0,attrs:{class:"token keyword"}},[_._v("DISABLE")]),v("span",{pre:!0,attrs:{class:"token punctuation"}},[_._v(";")]),_._v(" "),v("span",{pre:!0,attrs:{class:"token comment"}},[_._v("-- 关闭事件")]),_._v("\n")])]),_._v(" "),v("div",{staticClass:"line-numbers-wrapper"},[v("span",{staticClass:"line-number"},[_._v("1")]),v("br"),v("span",{staticClass:"line-number"},[_._v("2")]),v("br")])]),v("p",[_._v("contest表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment 1000起步")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("创建者id")])]),_._v(" "),v("tr",[v("td",[_._v("author")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛创建者的用户名")])]),_._v(" "),v("tr",[v("td",[_._v("title")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛标题")])]),_._v(" "),v("tr",[v("td",[_._v("type")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("Acm赛制或者Rating")])]),_._v(" "),v("tr",[v("td",[_._v("source")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛来源,原创为0,克隆赛为比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("auth")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("0为公开赛,1为私有赛(有密码),3为保护赛(有密码)。")])]),_._v(" "),v("tr",[v("td",[_._v("pwd")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛密码")])]),_._v(" "),v("tr",[v("td",[_._v("start_time")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("开始时间")])]),_._v(" "),v("tr",[v("td",[_._v("end_time")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("结束时间")])]),_._v(" "),v("tr",[v("td",[_._v("duration")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛时长(s)")])]),_._v(" "),v("tr",[v("td",[_._v("description")]),_._v(" "),v("td",[_._v("Srting")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛说明")])]),_._v(" "),v("tr",[v("td",[_._v("seal_rank")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否开启封榜")])]),_._v(" "),v("tr",[v("td",[_._v("seal_rank_time")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("封榜起始时间,一直到比赛结束,不刷新榜单。")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("-1为未开始,0为进行中,1为已结束")])]),_._v(" "),v("tr",[v("td",[_._v("visible")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否可见")])]),_._v(" "),v("tr",[v("td",[_._v("open_print")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否打开打印功能")])]),_._v(" "),v("tr",[v("td",[_._v("open_account_limit")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否开启账号限制")])]),_._v(" "),v("tr",[v("td",[_._v("account_limit_rule")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("账号限制规则")])]),_._v(" "),v("tr",[v("td",[_._v("rank_show_name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("排行榜显示(username、nickname、realname)")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_problem表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("display_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("展示的id")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("display_title")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("该题目在比赛中的标题,默认为原名字")])]),_._v(" "),v("tr",[v("td",[_._v("color")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("气球颜色,不设置则不显示")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_register表 比赛报名表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("默认为0表示正常,1为失效。")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_score表 rating赛制中获得的分数更改记录表(未使用)")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("last")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛前的score得分")])]),_._v(" "),v("tr",[v("td",[_._v("change")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("Score比分变化")])]),_._v(" "),v("tr",[v("td",[_._v("now")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("现在的score")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_record表 比赛记录表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("cpid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛中的题目id")])]),_._v(" "),v("tr",[v("td",[_._v("submit_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("提交id,用于可重判")])]),_._v(" "),v("tr",[v("td",[_._v("display_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("比赛展示的id")])]),_._v(" "),v("tr",[v("td",[_._v("username")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("用户名")])]),_._v(" "),v("tr",[v("td",[_._v("realname")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("真实姓名(废弃)")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("提交结果,0表示未AC通过不罚时,1表示AC通过,-1为未AC通过算罚时")])]),_._v(" "),v("tr",[v("td",[_._v("submit_time")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("具体提交时间")])]),_._v(" "),v("tr",[v("td",[_._v("time")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("提交时间,为提交时间减去比赛时间,时间戳")])]),_._v(" "),v("tr",[v("td",[_._v("score")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("OI比赛得分")])]),_._v(" "),v("tr",[v("td",[_._v("use_time")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("提交的程序运行耗时")])]),_._v(" "),v("tr",[v("td",[_._v("first_blood")]),_._v(" "),v("td",[_._v("Boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否为一血AC(废弃)")])]),_._v(" "),v("tr",[v("td",[_._v("checked")]),_._v(" "),v("td",[_._v("Boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("AC是否已校验")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_print表 比赛打印表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("username")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("提交打印文本的用户")])]),_._v(" "),v("tr",[v("td",[_._v("realname")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("真实姓名")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("需要打印的文本内容")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("状态 是否已打印")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("announcement表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("title")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("公告标题")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("公告内容")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("发布者id(必须为比赛创建者或者超级管理员才能)")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_announcement表 比赛时的通知表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("aid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("公告id")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("contest_explanation表 赛后题解表**(未使用)**")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("内容(支持markdown)")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("发布者(必须为比赛创建者或者超级管理员才能)")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("##训练(题单)模块")]),_._v(" "),v("p",[_._v("题单训练表 training")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td")]),_._v(" "),v("tr",[v("td",[_._v("title")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("训练题单名称")])]),_._v(" "),v("tr",[v("td",[_._v("description")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("训练题单简介")])]),_._v(" "),v("tr",[v("td",[_._v("author")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练题单创建者用户名")])]),_._v(" "),v("tr",[v("td",[_._v("auth")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("训练题单权限类型:Public、Private")])]),_._v(" "),v("tr",[v("td",[_._v("private_pwd")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("训练题单权限为Private时的密码")])]),_._v(" "),v("tr",[v("td",[_._v("rank")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("编号,升序")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否可用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("训练注册表 training_register")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td")]),_._v(" "),v("tr",[v("td",[_._v("tid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否可用")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("训练与题目关联表 training_problem")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td")]),_._v(" "),v("tr",[v("td",[_._v("tid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("display_id")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("排序用 展示id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("训练记录表 training_record")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td")]),_._v(" "),v("tr",[v("td",[_._v("tid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练id")])]),_._v(" "),v("tr",[v("td",[_._v("tpid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练题目id")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("题目id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("submit_id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("提交id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("训练分类表 training_category")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td")]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("分类名称")])]),_._v(" "),v("tr",[v("td",[_._v("color")]),_._v(" "),v("td",[_._v("string")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("分类背景颜色")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("训练分类关联表 mapping_training_category")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td")]),_._v(" "),v("tr",[v("td",[_._v("tid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练id")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("训练分类id(training_category)")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"讨论模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#讨论模块"}},[_._v("#")]),_._v(" 讨论模块")]),_._v(" "),v("blockquote",[v("p",[_._v("包括题目讨论区,公共讨论区,比赛评论")])]),_._v(" "),v("p",[_._v("category表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("分类名字")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("discussion表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("category_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("分类id")])]),_._v(" "),v("tr",[v("td",[_._v("title")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("讨论标题")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("讨论详情")])]),_._v(" "),v("tr",[v("td",[_._v("description")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("讨论描述")])]),_._v(" "),v("tr",[v("td",[_._v("pid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("引用的题目id,默认未null则不引用")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("iString")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("发布讨论的用户id")])]),_._v(" "),v("tr",[v("td",[_._v("author")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("发布讨论的用户名")])]),_._v(" "),v("tr",[v("td",[_._v("avatar")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("发布讨论的用户头像地址")])]),_._v(" "),v("tr",[v("td",[_._v("role")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("发布讨论的用户角色")])]),_._v(" "),v("tr",[v("td",[_._v("view_num")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("浏览数量")])]),_._v(" "),v("tr",[v("td",[_._v("like_num")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("点赞数量")])]),_._v(" "),v("tr",[v("td",[_._v("top_priority")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("优先级,是否置顶")])]),_._v(" "),v("tr",[v("td",[_._v("comment_num")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("评论数量")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否封禁或逻辑删除该讨论")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("discussion_like表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("did")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("讨论id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("discussion_report表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("did")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("讨论id")])]),_._v(" "),v("tr",[v("td",[_._v("reporter")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("举报者的用户名")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("举报内容")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否已读")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("comment表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("比赛id,NULL表示无引用比赛")])]),_._v(" "),v("tr",[v("td",[_._v("did")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("讨论id,NULL表示无引用讨论")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("评论内容")])]),_._v(" "),v("tr",[v("td",[_._v("from_uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("评论者id")])]),_._v(" "),v("tr",[v("td",[_._v("from_name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("评论者用户名")])]),_._v(" "),v("tr",[v("td",[_._v("from_avatar")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("评论者头像地址")])]),_._v(" "),v("tr",[v("td",[_._v("from_role")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("评论者角色")])]),_._v(" "),v("tr",[v("td",[_._v("like_num")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("点赞数量")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否封禁或逻辑删除该评论,0正常,1封禁")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("comment_like表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("lint")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("cid")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("评论id")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("reply表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("comment_id")]),_._v(" "),v("td",[_._v("ind")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("评论id")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("回复的内容")])]),_._v(" "),v("tr",[v("td",[_._v("from_uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("回复评论者id")])]),_._v(" "),v("tr",[v("td",[_._v("from_name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("回复评论者用户名")])]),_._v(" "),v("tr",[v("td",[_._v("from_avatar")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("回复评论者头像地址")])]),_._v(" "),v("tr",[v("td",[_._v("from_role")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("回复评论者角色")])]),_._v(" "),v("tr",[v("td",[_._v("to_uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("被回复的用户id")])]),_._v(" "),v("tr",[v("td",[_._v("to_name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("被回复的用户名")])]),_._v(" "),v("tr",[v("td",[_._v("to_avatar")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("被回复的用户头像地址")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否封禁或逻辑删除该回复,0正常,1封禁")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"站内消息模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#站内消息模块"}},[_._v("#")]),_._v(" 站内消息模块")]),_._v(" "),v("p",[_._v("admin_sys_notice表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("title")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("通知标题")])]),_._v(" "),v("tr",[v("td",[_._v("content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("通知内容")])]),_._v(" "),v("tr",[v("td",[_._v("type")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("发给哪些用户类型,例如全部用户All,指定单个用户Single,管理员Admin")])]),_._v(" "),v("tr",[v("td",[_._v("state")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否已被拉取过,如果已经拉取过,就无需再次拉取")])]),_._v(" "),v("tr",[v("td",[_._v("recipient_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("接受通知的用户的id,如果type为single,那么recipient 为该用户的id;否则recipient为null")])]),_._v(" "),v("tr",[v("td",[_._v("admin_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("发布通知的管理员id")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("user_sys_notice表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("sys_notice_id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("系统通知的id")])]),_._v(" "),v("tr",[v("td",[_._v("recipient_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("接受通知的用户的id")])]),_._v(" "),v("tr",[v("td",[_._v("type")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("消息类型,系统通知Sys、我的信息Mine")])]),_._v(" "),v("tr",[v("td",[_._v("state")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否已读")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("msg_remind表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("action")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("动作类型,如点赞讨论帖Like_Post、点赞评论Like_Discuss、评论Discuss、回复Reply等")])]),_._v(" "),v("tr",[v("td",[_._v("source_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("消息来源id,讨论id或比赛id")])]),_._v(" "),v("tr",[v("td",[_._v("source_type")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("事件源类型:'Discussion'、'Contest'等")])]),_._v(" "),v("tr",[v("td",[_._v("source_content")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("事件源的内容,比如回复的内容,回复的评论等等,不超过250字符,超过使用...")])]),_._v(" "),v("tr",[v("td",[_._v("quote_id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("事件引用上一级评论或回复id")])]),_._v(" "),v("tr",[v("td",[_._v("quote_type")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("事件引用上一级的类型:Comment、Reply")])]),_._v(" "),v("tr",[v("td",[_._v("url")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("事件所发生的地点链接 url")])]),_._v(" "),v("tr",[v("td",[_._v("recipient_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("接受通知的用户的id")])]),_._v(" "),v("tr",[v("td",[_._v("sender_id")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td",[_._v("外键")]),_._v(" "),v("td",[_._v("动作执行者的id")])]),_._v(" "),v("tr",[v("td",[_._v("state")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否已读")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"文件模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#文件模块"}},[_._v("#")]),_._v(" 文件模块")]),_._v(" "),v("p",[_._v("file表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("uid")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("用户id")])]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("文件名")])]),_._v(" "),v("tr",[v("td",[_._v("suffix")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("文件后缀格式")])]),_._v(" "),v("tr",[v("td",[_._v("folder_path")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("文件所在文件夹的路径")])]),_._v(" "),v("tr",[v("td",[_._v("file_path")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("文件绝对路径")])]),_._v(" "),v("tr",[v("td",[_._v("type")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("文件所属类型,例如avatar")])]),_._v(" "),v("tr",[v("td",[_._v("delete")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否删除")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("h2",{attrs:{id:"判题机模块"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#判题机模块"}},[_._v("#")]),_._v(" 判题机模块")]),_._v(" "),v("p",[_._v("judge_server表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("name")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题服务名字")])]),_._v(" "),v("tr",[v("td",[_._v("ip")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题机ip")])]),_._v(" "),v("tr",[v("td",[_._v("port")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题机端口号")])]),_._v(" "),v("tr",[v("td",[_._v("url")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("ip:port")])]),_._v(" "),v("tr",[v("td",[_._v("cpu_core")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题机所在服务器cpu核心数")])]),_._v(" "),v("tr",[v("td",[_._v("task_number")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("当前判题数")])]),_._v(" "),v("tr",[v("td",[_._v("max_task_number")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("判题并发最大数")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("0可用,1不可用")])]),_._v(" "),v("tr",[v("td",[_._v("version")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("版本控制")])]),_._v(" "),v("tr",[v("td",[_._v("is_remote")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("是否为远程判题vj")])]),_._v(" "),v("tr",[v("td",[_._v("cf_submittable")]),_._v(" "),v("td",[_._v("boolean")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("当前机器是否可提交cf,控制机器一次只能一账号交题")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])]),_._v(" "),v("p",[_._v("remote_judge_account表")]),_._v(" "),v("table",[v("thead",[v("tr",[v("th",[_._v("列名")]),_._v(" "),v("th",[_._v("实体属性类型")]),_._v(" "),v("th",[_._v("键")]),_._v(" "),v("th",[_._v("备注")])])]),_._v(" "),v("tbody",[v("tr",[v("td",[_._v("id")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td",[_._v("主键")]),_._v(" "),v("td",[_._v("auto_increment")])]),_._v(" "),v("tr",[v("td",[_._v("oj")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("vjudge交题的oj名字")])]),_._v(" "),v("tr",[v("td",[_._v("username")]),_._v(" "),v("td",[_._v("String")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("vjudge登录的账号")])]),_._v(" "),v("tr",[v("td",[_._v("password")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("vjudge登录的密码")])]),_._v(" "),v("tr",[v("td",[_._v("status")]),_._v(" "),v("td",[_._v("int")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("0可用,1不可用")])]),_._v(" "),v("tr",[v("td",[_._v("version")]),_._v(" "),v("td",[_._v("long")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("版本控制")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_create")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("创建时间")])]),_._v(" "),v("tr",[v("td",[_._v("gmt_modified")]),_._v(" "),v("td",[_._v("datetime")]),_._v(" "),v("td"),_._v(" "),v("td",[_._v("修改时间")])])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-比赛介绍.b1b25808.js b/docs/docs/.vuepress/dist/assets/js/page-比赛介绍.b1b25808.js deleted file mode 100644 index 94490435..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-比赛介绍.b1b25808.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{504:function(t,s,_){"use strict";_.r(s);var v=_(1),a=Object(v.a)({},(function(){var t=this,s=t.$createElement,_=t._self._c||s;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"比赛介绍"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#比赛介绍"}},[t._v("#")]),t._v(" 比赛介绍")]),t._v(" "),_("div",{staticClass:"custom-block tip"},[_("p",{staticClass:"custom-block-title"},[t._v("Tips")]),t._v(" "),_("p",[t._v("总概功能介绍")]),t._v(" "),_("ul",[_("li",[t._v("支持ACM、OI、IOI赛制")]),t._v(" "),_("li",[t._v("支持公开赛、保护赛、私有赛")]),t._v(" "),_("li",[t._v("支持线下打印功能")]),t._v(" "),_("li",[t._v("支持比赛账号限制功能")]),t._v(" "),_("li",[t._v("支持封榜、支持打星队伍、支持关注队伍")]),t._v(" "),_("li",[t._v("支持比赛外部榜单显示")]),t._v(" "),_("li",[t._v("支持榜单显示用户显示自定义")])])]),t._v(" "),_("h2",{attrs:{id:"两种赛制"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#两种赛制"}},[t._v("#")]),t._v(" 两种赛制")]),t._v(" "),_("h3",{attrs:{id:"一、acm-比赛模式"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#一、acm-比赛模式"}},[t._v("#")]),t._v(" 一、ACM 比赛模式")]),t._v(" "),_("p",[t._v("在该模式下,我们严格按照ACM-ICPC的比赛规则来进行,Contest设置项中的"),_("code",[t._v("Seal Time Rank")]),t._v("即为是否封榜,封榜后将不再刷新排名。可选择比赛结束前半小时,比赛前一小时,比赛全程封榜。")]),t._v(" "),_("p",[_("strong",[t._v("如果开启封榜,则封榜期间的角色不同如下:")])]),t._v(" "),_("div",{staticClass:"custom-block info"},[_("p",{staticClass:"custom-block-title"},[t._v("Info")]),t._v(" "),_("ol",[_("li",[t._v("封榜期间,"),_("strong",[t._v("超级管理员与比赛创建者")]),t._v("不受影响,正常可查看题目统计数据,提交数据等,排行榜需自行开启强制刷新,同时提交结果可以及时看到评测结果,但不会纳入排行榜!")]),t._v(" "),_("li",[t._v("封榜期间,"),_("strong",[t._v("普通用户与非比赛创建者")]),t._v("(包括其它管理员角色),可以及时看到自己的提交结果,但不可看到别人"),_("strong",[t._v("封榜后")]),t._v("的提交,不能看到题目的统计情况,排行榜保持"),_("strong",[t._v("封榜前")]),t._v("的排名数据。")])])]),t._v(" "),_("p",[_("strong",[t._v("注意:比赛一结束,默认所有数据变成正常显示,但后台可以设置比赛结束继续封榜!")])]),t._v(" "),_("h3",{attrs:{id:"二、oi-比赛模式"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#二、oi-比赛模式"}},[t._v("#")]),t._v(" 二、OI 比赛模式")]),t._v(" "),_("p",[t._v("在OI模式下,选手的提交将根据得分点来计分,多次提交以最后一次提交为准,排名规则为多个题目的总分数。同样可以进行封榜操作,封榜时段,选手不能查看到实时的排行榜数据!")]),t._v(" "),_("p",[_("strong",[t._v("如果开启封榜,则封榜期间的角色不同如下:")])]),t._v(" "),_("div",{staticClass:"custom-block info"},[_("p",{staticClass:"custom-block-title"},[t._v("Info")]),t._v(" "),_("ol",[_("li",[t._v("封榜期间,"),_("strong",[t._v("超级管理员与比赛创建者")]),t._v("不受影响,正常可查看题目统计数据,提交数据等,排行榜需自行开启强制刷新,同时提交结果可以及时看到评测结果,但不会纳入排行榜!")]),t._v(" "),_("li",[t._v("封榜期间:"),_("strong",[t._v("普通用户与非比赛创建者")]),t._v("(包括其它管理员角色),看不到自己和其它所有人"),_("strong",[t._v("封榜后")]),t._v("的提交结果,不能看到题目的统计情况,排行榜保持"),_("strong",[t._v("封榜前")]),t._v("的排名数据。")])])]),t._v(" "),_("p",[_("strong",[t._v("比赛一结束,默认所有数据变成正常显示,但后台可以设置比赛结束继续封榜!")])]),t._v(" "),_("div",{staticClass:"custom-block warning"},[_("p",{staticClass:"custom-block-title"},[t._v("Note")]),t._v(" "),_("p",[t._v("注意:管理员可以选择强制刷新,查看实时的排行榜数据!通过"),_("code",[t._v("Force Update")]),t._v("来强制刷新榜,且刷新后的榜仅对管理者可见。")])]),t._v(" "),_("h2",{attrs:{id:"比赛权限"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#比赛权限"}},[t._v("#")]),t._v(" 比赛权限")]),t._v(" "),_("div",{staticClass:"custom-block tip"},[_("p",{staticClass:"custom-block-title"},[t._v("Tips")]),t._v(" "),_("ul",[_("li",[_("strong",[t._v("公开赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,且都可以在比赛阶段随时提交。")]),t._v(" "),_("li",[_("strong",[t._v("保护赛")]),t._v(":所有用户都可以查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,但在比赛阶段提交需要提供该比赛的密码!")]),t._v(" "),_("li",[_("strong",[t._v("私有赛")]),t._v(":仅支持有比赛密码的用户进入比赛,查看查看比赛详情、比赛题目、比赛提交,比赛排行榜、比赛讨论等,包括提交。")])])]),t._v(" "),_("h2",{attrs:{id:"比赛题目"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#比赛题目"}},[t._v("#")]),t._v(" 比赛题目")]),t._v(" "),_("p",[_("strong",[t._v("后台比赛题目列表管理页面如下")])]),t._v(" "),_("p",[_("img",{attrs:{src:"https://img-blog.csdnimg.cn/2a8354a553d547d786e37d41050d3b95.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),t._v(" "),_("h2",{attrs:{id:"比赛管理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#比赛管理"}},[t._v("#")]),t._v(" 比赛管理")]),t._v(" "),_("p",[_("strong",[t._v("后台比赛管理页面如下")])]),t._v(" "),_("p",[_("img",{attrs:{src:"https://img-blog.csdnimg.cn/da52c1fe08e34be6be79fbe5c2b758d2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"比赛管理"}})])])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-测试用例.27b00c64.js b/docs/docs/.vuepress/dist/assets/js/page-测试用例.27b00c64.js deleted file mode 100644 index f599e7d0..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-测试用例.27b00c64.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{488:function(s,a,t){"use strict";t.r(a);var n=t(1),e=Object(n.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"测试用例"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#测试用例"}},[s._v("#")]),s._v(" 测试用例")]),s._v(" "),t("p",[t("img",{attrs:{src:"https://img-blog.csdnimg.cn/ad4851c069674b30af08f187363906c4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),s._v(" "),t("p",[t("strong",[s._v("进入后台添加题目,上传题目测试用例数据可以选择手动输入、Zip文件上传两种方式")])]),s._v(" "),t("h2",{attrs:{id:"一、手动输入"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#一、手动输入"}},[s._v("#")]),s._v(" 一、手动输入")]),s._v(" "),t("p",[s._v("每次点击"),t("code",[s._v("Add Sampple")]),s._v("就可以手动填入该用例的输入与输出,该方式比较适合题目数据简单的,同时手动输入的题目数据将记录进数据库,下次对该题目进行修改可以直接获取,然后进行测试数据的修改,同时也会在服务器对应的testcase文件夹生成对应的文件。")]),s._v(" "),t("h2",{attrs:{id:"二、文件上传"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#二、文件上传"}},[s._v("#")]),s._v(" 二、文件上传")]),s._v(" "),t("p",[s._v("对于通题目,测试用例文件包括"),t("code",[s._v("in")]),s._v("、"),t("code",[s._v("out")]),s._v("、"),t("code",[s._v("ans")]),s._v("三种拓展名")]),s._v(" "),t("p",[s._v("例如有两组测试用例,则对于普通题目测试用例的文件名分别为"),t("code",[s._v("1.in, 1.out(1.ans), 2.in, 2.out(2.ans)")]),s._v("其他形式的文件后台均不识别。")]),s._v(" "),t("p",[s._v("压缩时,请将文件都放在压缩包的根目录,而不是包含在某一个文件夹中,比如正确的格式是:")]),s._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".out\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".out\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[s._v("├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(".ans\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".in\n├── "),t("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v(".ans\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])]),t("p",[s._v("然后压缩测试用例到一个zip中")]),s._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[s._v("Warning")]),s._v(" "),t("p",[t("strong",[s._v("注意:即使没有输入或者没有输出,也请提供对应的空输入(输出)文件,不要在这些文件外面套多一层文件夹,请直接压缩!!!")])])]),s._v(" "),t("div",{staticClass:"custom-block info"},[t("p",{staticClass:"custom-block-title"},[s._v("Info")]),s._v(" "),t("p",[s._v("建议:尽量合并测试用例到一个文件中,减少测试用例组数,这会一定程度上提高判题性能。")])])])}),[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-特殊判题.dd76f996.js b/docs/docs/.vuepress/dist/assets/js/page-特殊判题.dd76f996.js deleted file mode 100644 index d0ace608..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-特殊判题.dd76f996.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{498:function(s,t,a){"use strict";a.r(t);var n=a(1),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#特殊判题"}},[s._v("#")]),s._v(" 特殊判题")]),s._v(" "),a("h2",{attrs:{id:"什么是特殊判题"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#什么是特殊判题"}},[s._v("#")]),s._v(" 什么是特殊判题?")]),s._v(" "),a("p",[s._v("特殊判题(Special Judge)是指OJ将使用一个特定的程序来判断提交的程序的输出是不是正确的,而不是单纯地看提交的程序的输出是否和标准输出一模一样。")]),s._v(" "),a("h2",{attrs:{id:"使用场景"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用场景"}},[s._v("#")]),s._v(" 使用场景")]),s._v(" "),a("p",[s._v("一般使用Special Judge都是因为题目的答案不唯一,更具体一点说的话一般是两种情况:")]),s._v(" "),a("ul",[a("li",[s._v("题目最终要求输出一个解决方案,而且这个解决方案可能不唯一。")]),s._v(" "),a("li",[s._v("题目最终要求输出一个浮点数,而且会告诉只要答案和标准答案相差不超过某个较小的数就可以,比如0.01。这种情况保留3位小数、4位小数等等都是可以的,而且多保留几位小数也没什么坏处。")])]),s._v(" "),a("h2",{attrs:{id:"支持"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#支持"}},[s._v("#")]),s._v(" 支持")]),s._v(" "),a("p",[s._v("HOJ支持testlib.h头文件的直接使用 具体使用文档请看"),a("a",{attrs:{href:"https://oi-wiki.org/tools/testlib/",target:"_blank",rel:"noopener noreferrer"}},[s._v("https://oi-wiki.org/tools/testlib/"),a("OutboundLink")],1)]),s._v(" "),a("h2",{attrs:{id:"例子"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#例子"}},[s._v("#")]),s._v(" 例子:")]),s._v(" "),a("p",[s._v("在创建题目的适合,选择开启特殊判题,编写特殊判题程序,然后编译通过便可。")]),s._v(" "),a("blockquote",[a("p",[s._v("后台对题目使用特殊判题时,请参考以下程序例子 判断精度")])]),s._v(" "),a("ul",[a("li",[s._v("使用Testlib特殊判题")])]),s._v(" "),a("div",{staticClass:"language-cpp line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"testlib.h"')])]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("using")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" std"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" argc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("char")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n inf: 输入文件流\n ouf: 选手输出流\n ans: 标准答案流\n **/")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("registerTestlibCmd")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("argc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("double")]),s._v(" pans "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" ouf"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("readDouble")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("double")]),s._v(" jans "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" ans"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("readDouble")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fabs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("pans "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v(" jans"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0.01")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("quitf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("_ok"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"The answer is correct."')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("quitf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("_wa"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"The answer is wrong: expected = %f, found = %f"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" jans"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" pans"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// quitf(_pe, "The answer is presentation error."); // 格式错误')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// quitf(_fail, "The something wrong cause system error."); // 系统错误')]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br")])]),a("ul",[a("li",[s._v("读取文件进行特殊判题")])]),s._v(" "),a("div",{staticClass:"language-cpp line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-cpp"}},[a("code",[a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("include")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("")])]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("AC")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("PE")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("101")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("WA")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("102")])])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token macro property"}},[a("span",{pre:!0,attrs:{class:"token directive-hash"}},[s._v("#")]),a("span",{pre:!0,attrs:{class:"token directive keyword"}},[s._v("define")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token macro-name"}},[s._v("ERROR")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token expression"}},[a("span",{pre:!0,attrs:{class:"token number"}},[s._v("103")])])]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("using")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("namespace")]),s._v(" std"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("void")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("!=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("NULL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fclose")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("f"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("main")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("int")]),s._v(" argc"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("char")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n args[1]:标准输入文件路径 \n args[2]:选手输出文件路径\n args[3]:标准输出文件路径 \n **/")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("std_input_file "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("user_output_file "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n FILE "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("*")]),s._v("std_output_file "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fopen")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("args"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"r"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("double")]),s._v(" std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 标准输出")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fscanf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("user_output_file"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"%lf"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("double")]),s._v(" user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户输出 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fscanf")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("std_output_file"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"%lf"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&")]),s._v("user_output"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 关闭文件流")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("std_input_file"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("user_output_file"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("close_file")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("std_output_file"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n \n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("if")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("fabs")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),s._v("user_output "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v(" std_out"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1e-6")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" AC"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("else")]),s._v(" \n\t\t"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" WA"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-环境配置.fcb3a8a5.js b/docs/docs/.vuepress/dist/assets/js/page-环境配置.fcb3a8a5.js deleted file mode 100644 index c0c9e5f2..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-环境配置.fcb3a8a5.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{501:function(s,a,t){"use strict";t.r(a);var e=t(1),n=Object(e.a)({},(function(){var s=this,a=s.$createElement,t=s._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[t("h1",{attrs:{id:"环境配置"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#环境配置"}},[s._v("#")]),s._v(" 环境配置")]),s._v(" "),t("h2",{attrs:{id:"环境说明"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#环境说明"}},[s._v("#")]),s._v(" 环境说明")]),s._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),t("ul",[t("li",[s._v("后端:需要在Linux系统下部署运行,建议使用ubuntu18.04,其它版本的Linux系统也可,同时需要"),t("strong",[s._v("Docker")]),s._v("辅助部署")]),s._v(" "),t("li",[s._v("前端:Linux系统下,需要nginx进行反向代理")]),s._v(" "),t("li",[s._v("判题服务:由于判题沙盒有多操作系统版本,Linux系统或Windows都可,但是在本HOJ镜像中"),t("strong",[s._v("只能")]),s._v("使用"),t("strong",[s._v("Ubuntu16.04")]),s._v("以上或者"),t("strong",[s._v("CentOS8")]),s._v("以上。")]),s._v(" "),t("li",[s._v("数据同步:需要运行判题服务和后端服务的服务器有rsync即可")]),s._v(" "),t("li",[t("strong",[s._v("尽量不要使用突发性能或共享型的云服务器实例,有可能造成评测时间计量不准确。")])])])]),s._v(" "),t("h2",{attrs:{id:"linux环境搭建"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#linux环境搭建"}},[s._v("#")]),s._v(" Linux环境搭建")]),s._v(" "),t("blockquote",[t("p",[s._v("HOJ使用的Ubuntu18.04版本,单机部署建议2核4G以上内存")])]),s._v(" "),t("h3",{attrs:{id:"安装docker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#安装docker"}},[s._v("#")]),s._v(" 安装docker")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("安装需要的包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装依赖包")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n apt-transport-https "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n ca-certificates "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n gnupg-agent "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n software-properties-common\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br"),t("span",{staticClass:"line-number"},[s._v("5")]),t("br"),t("span",{staticClass:"line-number"},[s._v("6")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("添加 Docker 的官方 GPG 密钥")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -fsSL https://download.docker.com/linux/ubuntu/gpg "),t("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" apt-key "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("add")]),s._v(" -\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("设置远程仓库")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" add-apt-repository "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n "),t("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb [arch=amd64] https://download.docker.com/linux/ubuntu \\\n '),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),s._v("lsb_release -cs"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v(' \\\n stable"')]),s._v("\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br"),t("span",{staticClass:"line-number"},[s._v("3")]),t("br"),t("span",{staticClass:"line-number"},[s._v("4")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("安装 Docker-CE")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" update\n"),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt-get")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" docker-ce docker-ce-cli containerd.io\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br"),t("span",{staticClass:"line-number"},[s._v("2")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("验证是否成功")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" docker run hello-world\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("h3",{attrs:{id:"安装docker-compose"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#安装docker-compose"}},[s._v("#")]),s._v(" 安装docker-compose")]),s._v(" "),t("ol",[t("li",[t("p",[s._v("下载")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-"),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("uname")]),s._v(" -s"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v("-"),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")]),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("uname")]),s._v(" -m"),t("span",{pre:!0,attrs:{class:"token variable"}},[s._v("`")])]),s._v(" -o /usr/local/bin/docker-compose\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])]),s._v(" "),t("li",[t("p",[s._v("授权")]),s._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[s._v("chmod")]),s._v(" +x /usr/local/bin/docker-compose\n")])]),s._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[s._v("1")]),t("br")])])])]),s._v(" "),t("h2",{attrs:{id:"windows-环境"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#windows-环境"}},[s._v("#")]),s._v(" Windows 环境")]),s._v(" "),t("p",[s._v("Windows 下的安装仅供体验,勿在生产环境使用。如有必要,请使用虚拟机安装 Linux 并将 OJ 安装在其中。")]),s._v(" "),t("p",[s._v("以下教程仅适用于 Win10 x64 下的 "),t("code",[s._v("PowerShell")])]),s._v(" "),t("ol",[t("li",[s._v("安装 Windows 的 Docker 工具")]),s._v(" "),t("li",[s._v("右击右下角 Docker 图标,选择 Settings 进行设置")]),s._v(" "),t("li",[s._v("选择 "),t("code",[s._v("Shared Drives")]),s._v(" 菜单,之后勾选你想安装 OJ 的盘符位置(例如勾选D盘),点击 "),t("code",[s._v("Apply")])]),s._v(" "),t("li",[s._v("输入 Windows 的账号密码进行文件共享")]),s._v(" "),t("li",[s._v("安装 "),t("code",[s._v("Python")]),s._v("、"),t("code",[s._v("pip")]),s._v("、"),t("code",[s._v("git")]),s._v("、"),t("code",[s._v("docker-compose")]),s._v(",安装方法自行搜索。")])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-用户管理.79ab4b17.js b/docs/docs/.vuepress/dist/assets/js/page-用户管理.79ab4b17.js deleted file mode 100644 index 81978a14..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-用户管理.79ab4b17.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{495:function(t,e,_){"use strict";_.r(e);var v=_(1),a=Object(v.a)({},(function(){var t=this,e=t.$createElement,_=t._self._c||e;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"用户管理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#用户管理"}},[t._v("#")]),t._v(" 用户管理")]),t._v(" "),_("blockquote",[_("p",[t._v("注意:用户管理只有超级管理员账号可以操作!")])]),t._v(" "),_("p",[_("strong",[t._v("管理员角色说明")])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("权限")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("超级管理员")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("题目管理员")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("普通管理员")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("系统公告管理")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("系统通知推送管理")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("系统配置")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("用户管理")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("全部题目增加")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])]),t._v(" "),_("tr",[_("td",[t._v("全部题目修改")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])]),t._v(" "),_("tr",[_("td",[t._v("全部题目删除")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("全部题目权限修改(公开、隐藏、比赛)")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("全部题目评测数据下载")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("导入远程OJ题目")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])]),t._v(" "),_("tr",[_("td",[t._v("全部比赛权限(增加、删除、修改)")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("自己创建的比赛(增加、修改)")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])]),t._v(" "),_("tr",[_("td",[t._v("自己创建的比赛的题目(增加,修改,移除)")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])]),t._v(" "),_("tr",[_("td",[t._v("自己创建的比赛的题目(评测数据下载、删除)")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("自己创建的比赛的题目权限修改(隐藏、删除)")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])]),t._v(" "),_("tr",[_("td",[t._v("自己创建的比赛的题目权限修改为公开题目")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("讨论管理")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")])])])]),t._v(" "),_("p",[_("strong",[t._v("用户角色说明")])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("权限")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("用户(默认)")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("用户(禁止提交)")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("用户(禁止发讨论)")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("用户(禁言)")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("用户(禁止提交&禁止发讨论)")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("用户(禁止提交&禁言)")]),t._v(" "),_("th",{staticStyle:{"text-align":"center"}},[t._v("封禁")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("发布讨论")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("修改讨论")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("删除讨论")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("发表评论")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("删除评论")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("提交代码")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])]),t._v(" "),_("tr",[_("td",[t._v("一切用户权力")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("✔")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❗")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❗")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❗")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❗")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❗")]),t._v(" "),_("td",{staticStyle:{"text-align":"center"}},[t._v("❌")])])])]),t._v(" "),_("ol",[_("li",[t._v("进入后台管理")])]),t._v(" "),_("p",[_("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210614144542595.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),t._v(" "),_("ol",{attrs:{start:"2"}},[_("li",[t._v("点击编辑后,可修改用户角色")])]),t._v(" "),_("p",[_("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210614144409579.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-简介.92ac6abc.js b/docs/docs/.vuepress/dist/assets/js/page-简介.92ac6abc.js deleted file mode 100644 index c22b6dc3..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-简介.92ac6abc.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{497:function(v,_,l){"use strict";l.r(_);var i=l(1),t=Object(i.a)({},(function(){var v=this,_=v.$createElement,l=v._self._c||_;return l("ContentSlotsDistributor",{attrs:{"slot-key":v.$parent.slotKey}},[l("h1",{attrs:{id:"简介"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#简介"}},[v._v("#")]),v._v(" 简介")]),v._v(" "),l("h2",{attrs:{id:"技术选型"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#技术选型"}},[v._v("#")]),v._v(" 技术选型")]),v._v(" "),l("blockquote",[l("p",[v._v("基于Springcloud 和Vue.js的前后端分离的分布式在线评测系统")])]),v._v(" "),l("ul",[l("li",[l("p",[v._v("前端:")]),v._v(" "),l("ul",[l("li",[v._v("技术以Vue为主,element-ui为主要框架")]),v._v(" "),l("li",[v._v("支持手机端,响应式布局")]),v._v(" "),l("li",[v._v("以CodeMirror作为在线代码编辑器")]),v._v(" "),l("li",[v._v("以Mavon-Editor作为富文本编辑器")]),v._v(" "),l("li",[v._v("支持用户头像上传,可选择性获取用户Codeforces分数")]),v._v(" "),l("li",[v._v("定时获取例如Codeforces等其它知名OJ的近期比赛数据")]),v._v(" "),l("li",[v._v("当前支持HDU的Virtual Judge(远程虚拟判题)与题目获取")]),v._v(" "),l("li",[v._v("题目支持特别判题")]),v._v(" "),l("li",[v._v("题目支持可选择性去除提交代码的末尾空白符(会影响CE判定)")]),v._v(" "),l("li",[v._v("题目支持可选择性允许用户查看各个测试点结果(状态,运行时间,运行空间,OI题目的测试点得分),暂不支持测试点数据公开。")]),v._v(" "),l("li",[v._v("题目讨论")]),v._v(" "),l("li",[v._v("管理后台支持题目数据以ZIP上传或手动输入上传")]),v._v(" "),l("li",[v._v("管理后台支持监控服务系统的状态及各判题服务的状态")]),v._v(" "),l("li",[v._v("管理后台支持动态修改网站配置,例如邮件系统配置,数据库配置等")]),v._v(" "),l("li",[v._v("比赛支持封榜,支持ACM与OI模式")]),v._v(" "),l("li",[v._v("比赛支持私有赛(需要密码才可查看与提交),保护赛(每个用户都可查看,提交需要密码),公开赛(每个用户都可查看与提交)三种模式")]),v._v(" "),l("li",[v._v("用户提交失败时可重新提交,管理员支持提交重判与比赛题目所有提交重判")]),v._v(" "),l("li",[v._v("公共讨论区")]),v._v(" "),l("li",[v._v("比赛讨论")]),v._v(" "),l("li",[v._v("站内消息系统")])])]),v._v(" "),l("li",[l("p",[v._v("后端:")]),v._v(" "),l("ul",[l("li",[v._v("Web框架技术以Springboot为主")]),v._v(" "),l("li",[v._v("以Nacos为分布式注册中心及分布式配置中心,支持配置文件动态刷新,支持判题服务Ribbon的负载均衡")]),v._v(" "),l("li",[v._v("以Mybatis-Plus为数据库中间件,负责数据实体类与数据库数据的转化与获取。")]),v._v(" "),l("li",[v._v("以Jsoup为爬虫框架,负责远程虚拟OJ的题目获取及提交结果获取,同时定时获取各用户的Codeforces分数以及其它知名OJ的近期比赛。")]),v._v(" "),l("li",[v._v("以Shiro为安全框架,支持用户角色权限管理,支持token刷新")]),v._v(" "),l("li",[v._v("以redis的发布订阅者作为判题服务的消息提醒,以此调用判题服务")]),v._v(" "),l("li",[v._v("后端分为数据后台服务(DataBackup)及判题服务(JudgeServer)\n"),l("ul",[l("li",[l("p",[v._v("数据后台服务:负责提供接口,提供相关数据给前端等")])]),v._v(" "),l("li",[l("p",[v._v("判题服务:只负责获取数据后台服务传输过来的判题的提交,调用VJ判题或调用判题机(Go-Judge)进行评测,将对应结果写回数据库")])])])])])]),v._v(" "),l("li",[l("p",[v._v("判题机:")]),v._v(" "),l("ul",[l("li",[v._v("支持HDU的VJ判题")]),v._v(" "),l("li",[v._v("支持Codefoces的VJ判题")]),v._v(" "),l("li",[v._v("以HttpAPI的形式调用Go-Jugde(高性能可复用的判题沙盒)判题安全沙盒进行提交程序的评测(调用线程池多线程跑评测)")])])]),v._v(" "),l("li",[l("p",[v._v("数据库")]),v._v(" "),l("ul",[l("li",[v._v("Mysql")])])]),v._v(" "),l("li",[l("p",[v._v("缓存中间件")]),v._v(" "),l("ul",[l("li",[v._v("Redis")])])])]),v._v(" "),l("blockquote",[l("p",[v._v("HOJ基本逻辑架构图")])]),v._v(" "),l("p",[l("img",{attrs:{src:"https://cdn.jsdelivr.net/gh/HimitZH/CDN/images/hoj.png",alt:"image-20201030234527577"}})]),v._v(" "),l("h2",{attrs:{id:"判题逻辑"}},[l("a",{staticClass:"header-anchor",attrs:{href:"#判题逻辑"}},[v._v("#")]),v._v(" 判题逻辑")]),v._v(" "),l("ol",[l("li",[l("p",[v._v("前端用户提交数据。")])]),v._v(" "),l("li",[l("p",[v._v("后端数据服务(DataBackup)获取到数据,先将提交数据初始化,同时将该提交的状态变成等待中,写入数据库。")])]),v._v(" "),l("li",[l("p",[v._v("通过Redis,写入"),l("strong",[v._v("等待判题队列")])])]),v._v(" "),l("li",[l("p",[v._v("调用work处理者,初始化传输数据,使用springcloud alibaba通过nacos注册中心调用判题微服务。")])]),v._v(" "),l("li",[l("p",[v._v("若是调用判题服务失败(没有空闲的判题服务器),则重新通过发布者将该提交信息发布到对应"),l("strong",[v._v("等待判题队列")]),v._v(",重回3。")])]),v._v(" "),l("li",[l("p",[v._v("若是调用失败超过30次,则将提交的状态修改为提交失败,不再进行判题服务的调用。")])]),v._v(" "),l("li",[l("p",[v._v("前端用户可看到提交变成提交失败,可点击状态进行重新提交,重回2(注:重新提交不影响提交时间等数据)")])]),v._v(" "),l("li",[l("p",[v._v("判题微服务获取到提交数据:")]),v._v(" "),l("ul",[l("li",[l("p",[v._v("若是远程调用,进行远程提交,获取对应的提交ID,若是获取失败则判为提交失败,若是获取成功,就启用线程定时器每2秒根据提交ID获取判题结果。")]),v._v(" "),l("p",[v._v("定时尝试30次,获取成功,写回数据库,获取失败就修改此次提交为提交失败。")])]),v._v(" "),l("li",[l("p",[v._v("若是自家题目提交,则启用线程池多线程使用Http将对应测试点数据与代码提交给Go-Judge判题沙盒进行编译与评测,最后获取各个评测点结果,进行结果计算写回数据库。")])])])])])])}),[],!1,null,null,null);_.default=t.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-自定义前端.c86fc250.js b/docs/docs/.vuepress/dist/assets/js/page-自定义前端.c86fc250.js deleted file mode 100644 index 13461b69..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-自定义前端.c86fc250.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{505:function(s,t,a){"use strict";a.r(t);var n=a(1),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"自定义前端"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义前端"}},[s._v("#")]),s._v(" 自定义前端")]),s._v(" "),a("h2",{attrs:{id:"一、完全自定义前端"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、完全自定义前端"}},[s._v("#")]),s._v(" 一、完全自定义前端")]),s._v(" "),a("p",[s._v("直接下载"),a("a",{attrs:{href:"https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("https://gitee.com/himitzh0730/hoj/tree/master/hoj-vue"),a("OutboundLink")],1)]),s._v(" "),a("p",[s._v("修改后,使用"),a("code",[s._v("npm run build")]),s._v(",生成一个dist文件夹,结构如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("dist\n├── index.html\n├── favicon.ico\n└── assets\n ├── css\n │ ├── ....\n ├── fonts\n │ ├── ....\n ├── img\n │ ├── ....\n ├── js\n │ ├── ....\n\n....\n....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br")])]),a("p",[s._v("将 "),a("code",[s._v("dist")]),s._v(" 文件夹复制到服务器上某个目录下,比如 "),a("code",[s._v("/hoj/www/html/dist")]),s._v(",然后修改 "),a("code",[s._v("docker-compose.yml")]),s._v(",在 "),a("code",[s._v("hoj-frontend")]),s._v(" 模块中的 "),a("code",[s._v("volumes")]),s._v(" 中增加一行 "),a("code",[s._v("- /hoj/www/html/dist:/usr/share/nginx/html")]),s._v(" (冒号前面的请修改为实际的路径),然后 "),a("code",[s._v("docker-compose up -d")]),s._v(" 即可。")]),s._v(" "),a("h2",{attrs:{id:"二、仅修改图标"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、仅修改图标"}},[s._v("#")]),s._v(" 二、仅修改图标")]),s._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[s._v("Tips")]),s._v(" "),a("p",[s._v("如果仅仅只是修改前台logo、管理后台logo和favicon.ico,那么操作如下:")])]),s._v(" "),a("p",[s._v("修改 "),a("code",[s._v("docker-compose.yml")]),s._v(",在 "),a("code",[s._v("hoj-frontend")]),s._v(" 模块中的 "),a("code",[s._v("volumes")]),s._v(" 中添加如下:")]),s._v(" "),a("div",{staticClass:"language-yaml line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./logo.png"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/usr/share/nginx/html/assets/img/logo.a0924d7d.png\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./backstage.png"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/usr/share/nginx/html/assets/img/backstage.8bce8c6e.png\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("-")]),s._v(" ./favicon.ico"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v("/usr/share/nginx/html/favicon.ico\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br")])]),a("p",[a("code",[s._v("logo.png")]),s._v("为前台导航栏左边的logo,"),a("code",[s._v("backstage.png")]),s._v("为后台侧边导航栏上方的logo,"),a("code",[s._v("favicon.ico")]),s._v("为小图标")]),s._v(" "),a("p",[a("strong",[s._v("图片文件需放在与docker-compose.yml同个目录下,或者提供绝对路径也可。")])])])}),[],!1,null,null,null);t.default=e.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-评论管理.c2bb15b8.js b/docs/docs/.vuepress/dist/assets/js/page-评论管理.c2bb15b8.js deleted file mode 100644 index 873de720..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-评论管理.c2bb15b8.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{509:function(t,s,a){"use strict";a.r(s);var e=a(1),l=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"评论管理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#评论管理"}},[t._v("#")]),t._v(" 评论管理")]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/6fcdb9f6895043498cb9d4bbadeb0a5b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"评论管理"}})]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Tips")]),t._v(" "),a("ul",[a("li",[t._v("后台管理员可以查看所有的讨论帖,并且可以选择是否置顶,是否正常显示,删除,查看等")]),t._v(" "),a("li",[t._v("后台管理员可以查看对应讨论帖的举报内容")])])]),t._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523221321418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})])])}),[],!1,null,null,null);s.default=l.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-通知和公告发布.c34f8774.js b/docs/docs/.vuepress/dist/assets/js/page-通知和公告发布.c34f8774.js deleted file mode 100644 index cf001611..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-通知和公告发布.c34f8774.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{491:function(t,s,e){"use strict";e.r(s);var a=e(1),c=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"通知和公告发布"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#通知和公告发布"}},[t._v("#")]),t._v(" 通知和公告发布")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Tips")]),t._v(" "),e("ol",[e("li",[t._v("通知和公告都仅有超级管理员可操作")]),t._v(" "),e("li",[t._v("通知是系统消息通知,每个小时推送一次到用户的站内消息系统")])])]),t._v(" "),e("p",[e("img",{attrs:{src:"https://img-blog.csdnimg.cn/b2e1edf697494ed68c760beb63b782bf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),t._v(" "),e("p",[e("img",{attrs:{src:"https://img-blog.csdnimg.cn/fe1cf4b8c0174933b8ffc8f17a486b53.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})])])}),[],!1,null,null,null);s.default=c.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/page-题目管理.c50a2fe7.js b/docs/docs/.vuepress/dist/assets/js/page-题目管理.c50a2fe7.js deleted file mode 100644 index 464a27d1..00000000 --- a/docs/docs/.vuepress/dist/assets/js/page-题目管理.c50a2fe7.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{499:function(s,t,a){"use strict";a.r(t);var n=a(1),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"题目管理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#题目管理"}},[s._v("#")]),s._v(" 题目管理")]),s._v(" "),a("h2",{attrs:{id:"一、hoj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#一、hoj题目"}},[s._v("#")]),s._v(" 一、HOJ题目")]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/f059e38d31c44906b35ad4ff0d488013.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),s._v(" "),a("h4",{attrs:{id:"_1-导出题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_1-导出题目"}},[s._v("#")]),s._v(" 1. 导出题目")]),s._v(" "),a("p",[s._v("点击选择需要的题目,便可以批量导出成一个zip压缩包,分别对应一个json格式的题目数据,一个对应名字的文件夹存放评测数据文件,具体的文件结构如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("+-- problem_1000.json\n+-- problem_1000\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n+-- problem_1001.json\n+-- problem_1001\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_2-导入题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2-导入题目"}},[s._v("#")]),s._v(" 2. 导入题目")]),s._v(" "),a("p",[s._v("选择需要导入的题目数据zip压缩包,注意"),a("strong",[s._v("不要多一层文件夹进行压缩")]),s._v(","),a("strong",[s._v("请保证题目json文件的名字与其对应的存放评测数据的文件夹名字一致")]),s._v(",具体文件格式如下:")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("+-- problem_1000.json\n+-- problem_1000\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n+-- problem_1001.json\n+-- problem_1001\n| +-- 1.in\n| +-- 1.out\n| +-- ....\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br")])]),a("h4",{attrs:{id:"_3-题目的json文件格式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_3-题目的json文件格式"}},[s._v("#")]),s._v(" 3. 题目的json文件格式")]),s._v(" "),a("p",[s._v("请严格按照以下格式,才可以正常导入。")]),s._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目支持的语言如下,可多可少")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"languages"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C++"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Java"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Python3"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Python2"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Golang"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C#"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"samples"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1.in"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"1.out"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('//"score": 10 // 如果是oi题目需要给测试点加得分')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2.in"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"2.out"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('//"score": 10 // 如果是oi题目需要给测试点加得分')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"tags"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"测试题"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"测试"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目标签,一般不超过三个 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"problem"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"auth"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 1 公开赛")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"author"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"admin"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目上传的作者,请使用用户名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isRemote"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 均为非VJ题目,不用修改")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"problemId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"HOJ-1010"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的展示id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"description"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的描述,支持markdown语法")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"source"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目来源")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"title"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目标题")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 0为ACM题目,1为OI题目")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"timeLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 时间限制 单位是ms")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"memoryLimit"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("256")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 空间限制 单位是mb")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"input"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的输入描述")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"output"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的输出描述")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"difficulty"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目难度,1为简单,2为中等,3为困难")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"examples"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目的题面样例,格式为输入输出输入输出")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"ioScore"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// OI题目总得分,与测试点总分一致")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"codeShare"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 该题目是否允许用户共享其提交的代码 ")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"hint"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 题目提示")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isRemoveEndBlank"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 评测数据的输出是否自动去掉行末空格")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"openCaseResult"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 是否允许用户看到各个评测点的结果")]),s._v("\n \t"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "spjLanguage:"C" // 特殊判题的程序代码语言')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('// "spjCode":"" // 特殊判题的代码')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"isSpj"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("false")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 是否为特殊判题")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"codeTemplates"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"language"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码语言")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('""')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v('"language"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"C++"')]),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 模板代码语言")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br")])]),a("h2",{attrs:{id:"二、导入qduoj或fps格式的题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#二、导入qduoj或fps格式的题目"}},[s._v("#")]),s._v(" 二、导入QDUOJ或FPS格式的题目")]),s._v(" "),a("ol",[a("li",[s._v("请严格按照青岛oj的后台导出的压缩文件来上传。")]),s._v(" "),a("li",[s._v("请使用标准的FPS格式的题目数据文件(.xml)")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/57c6518fb9fe426088c064d85dd110d3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),s._v(" "),a("h2",{attrs:{id:"三、导入其它oj题目"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#三、导入其它oj题目"}},[s._v("#")]),s._v(" 三、导入其它OJ题目")]),s._v(" "),a("p",[s._v("导入HDU、Codeforces、POJ、GYM的题目,只需提供该题目的题号便可一键导入")]),s._v(" "),a("p",[a("strong",[s._v("管理员进入后台,点击题目列表")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/5304425397f249808b7ea0ea2a0153cc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASGltaXRfWkg=,size_20,color_FFFFFF,t_70,g_se,x_16",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[s._v("然后添加上方的添加按钮")]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523222914722.png",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[a("strong",[s._v("在弹出窗中选择OJ名字及题号,便可导入")])]),s._v(" "),a("p",[a("img",{attrs:{src:"https://img-blog.csdnimg.cn/20210523223042100.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg1MzA5Nw==,size_16,color_FFFFFF,t_70",alt:"在这里插入图片描述"}})]),s._v(" "),a("p",[a("strong",[s._v("注意:")])]),s._v(" "),a("ul",[a("li",[s._v("HDU和POJ的题号一般是 1000以上的数字")]),s._v(" "),a("li",[s._v("Codeforces和GYM的题号是1000A、1000B、这种数字加大写英文字母的格式")])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/vendors~layout-Blog~layout-Layout~layout-NotFound.53215b6b.js b/docs/docs/.vuepress/dist/assets/js/vendors~layout-Blog~layout-Layout~layout-NotFound.53215b6b.js deleted file mode 100644 index 1542061a..00000000 --- a/docs/docs/.vuepress/dist/assets/js/vendors~layout-Blog~layout-Layout~layout-NotFound.53215b6b.js +++ /dev/null @@ -1,14 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[2],Array(183).concat([function(t,e,r){var i=r(190),n=i.Buffer;function a(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(a(i,e),e.Buffer=s),a(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},function(t,e,r){(function(t){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function a(t,e,r){if(a.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=a:e.BN=a,a.BN=a,a.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(226).Buffer}catch(t){}function o(t,e){var r=t.charCodeAt(e);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+t)}function c(t,e,r){var i=o(t,r);return r-1>=e&&(i|=o(t,r-1)<<4),i}function f(t,e,r,n){for(var a=0,s=0,o=Math.min(t.length,r),c=e;c=49?f-49+10:f>=17?f-17+10:f,i(f>=0&&s0?t:e},a.min=function(t,e){return t.cmp(e)<0?t:e},a.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[a]|=s<>>26-o&67108863,(o+=24)>=26&&(o-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-o&67108863,(o+=24)>=26&&(o-=26,a++);return this._strip()},a.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=c(t,e,i)<=18?(a-=18,s+=1,this.words[s]|=n>>>26):a+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(a-=18,s+=1,this.words[s]|=n>>>26):a+=8;this._strip()},a.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var a=t.length-r,s=a%i,o=Math.min(a,a-s)+r,c=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{a.prototype[Symbol.for("nodejs.util.inspect.custom")]=u}catch(t){a.prototype.inspect=u}else a.prototype.inspect=u;function u(){return(this.red?""}var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];a.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,a=0,s=0;s>>24-n&16777215)||s!==this.length-1?d[6-c.length]+c+r:c+r,(n+=2)>=26&&(n-=26,s--)}for(0!==a&&(r=a.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var f=l[t],h=p[t];r="";var u=this.clone();for(u.negative=0;!u.isZero();){var b=u.modrn(h).toString(t);r=(u=u.idivn(h)).isZero()?b+r:d[f-b.length]+b+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},a.prototype.toJSON=function(){return this.toString(16,2)},s&&(a.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),a.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)};function b(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],a=0|e.words[0],s=n*a,o=67108863&s,c=s/67108864|0;r.words[0]=o;for(var f=1;f>>26,u=67108863&c,d=Math.min(f,e.length-1),l=Math.max(0,f-t.length+1);l<=d;l++){var p=f-l|0;h+=(s=(n=0|t.words[p])*(a=0|e.words[l])+u)/67108864|0,u=67108863&s}r.words[f]=0|u,c=0|h}return 0!==c?r.words[f]=0|c:r.length--,r._strip()}a.prototype.toArrayLike=function(t,e,r){this._strip();var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,a);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,n),s},a.prototype._toArrayLikeLE=function(t,e){for(var r=0,i=0,n=0,a=0;n>8&255),r>16&255),6===a?(r>24&255),i=0,a=0):(i=s>>>24,a+=2)}if(r=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===a?(r>=0&&(t[r--]=s>>24&255),i=0,a=0):(i=s>>>24,a+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0},Math.clz32?a.prototype._countBits=function(t){return 32-Math.clz32(t)}:a.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},a.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},a.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},a.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},a.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},a.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},a.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},a.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},a.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},a.prototype.notn=function(t){return this.clone().inotn(t)},a.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;at.length?this.clone().iadd(t):t.clone().iadd(this)},a.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var a=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==a&&s>26,this.words[s]=67108863&e;if(0===a&&s>>13,l=0|s[1],p=8191&l,b=l>>>13,g=0|s[2],m=8191&g,v=g>>>13,y=0|s[3],_=8191&y,w=y>>>13,S=0|s[4],M=8191&S,k=S>>>13,x=0|s[5],E=8191&x,A=x>>>13,C=0|s[6],I=8191&C,B=C>>>13,T=0|s[7],O=8191&T,L=T>>>13,$=0|s[8],j=8191&$,P=$>>>13,R=0|s[9],z=8191&R,D=R>>>13,U=0|o[0],N=8191&U,q=U>>>13,F=0|o[1],H=8191&F,W=F>>>13,K=0|o[2],V=8191&K,Y=K>>>13,G=0|o[3],X=8191&G,J=G>>>13,Z=0|o[4],Q=8191&Z,tt=Z>>>13,et=0|o[5],rt=8191&et,it=et>>>13,nt=0|o[6],at=8191&nt,st=nt>>>13,ot=0|o[7],ct=8191&ot,ft=ot>>>13,ht=0|o[8],ut=8191&ht,dt=ht>>>13,lt=0|o[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(f+(i=Math.imul(u,N))|0)+((8191&(n=(n=Math.imul(u,q))+Math.imul(d,N)|0))<<13)|0;f=((a=Math.imul(d,q))+(n>>>13)|0)+(gt>>>26)|0,gt&=67108863,i=Math.imul(p,N),n=(n=Math.imul(p,q))+Math.imul(b,N)|0,a=Math.imul(b,q);var mt=(f+(i=i+Math.imul(u,H)|0)|0)+((8191&(n=(n=n+Math.imul(u,W)|0)+Math.imul(d,H)|0))<<13)|0;f=((a=a+Math.imul(d,W)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(m,N),n=(n=Math.imul(m,q))+Math.imul(v,N)|0,a=Math.imul(v,q),i=i+Math.imul(p,H)|0,n=(n=n+Math.imul(p,W)|0)+Math.imul(b,H)|0,a=a+Math.imul(b,W)|0;var vt=(f+(i=i+Math.imul(u,V)|0)|0)+((8191&(n=(n=n+Math.imul(u,Y)|0)+Math.imul(d,V)|0))<<13)|0;f=((a=a+Math.imul(d,Y)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(_,N),n=(n=Math.imul(_,q))+Math.imul(w,N)|0,a=Math.imul(w,q),i=i+Math.imul(m,H)|0,n=(n=n+Math.imul(m,W)|0)+Math.imul(v,H)|0,a=a+Math.imul(v,W)|0,i=i+Math.imul(p,V)|0,n=(n=n+Math.imul(p,Y)|0)+Math.imul(b,V)|0,a=a+Math.imul(b,Y)|0;var yt=(f+(i=i+Math.imul(u,X)|0)|0)+((8191&(n=(n=n+Math.imul(u,J)|0)+Math.imul(d,X)|0))<<13)|0;f=((a=a+Math.imul(d,J)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(M,N),n=(n=Math.imul(M,q))+Math.imul(k,N)|0,a=Math.imul(k,q),i=i+Math.imul(_,H)|0,n=(n=n+Math.imul(_,W)|0)+Math.imul(w,H)|0,a=a+Math.imul(w,W)|0,i=i+Math.imul(m,V)|0,n=(n=n+Math.imul(m,Y)|0)+Math.imul(v,V)|0,a=a+Math.imul(v,Y)|0,i=i+Math.imul(p,X)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(b,X)|0,a=a+Math.imul(b,J)|0;var _t=(f+(i=i+Math.imul(u,Q)|0)|0)+((8191&(n=(n=n+Math.imul(u,tt)|0)+Math.imul(d,Q)|0))<<13)|0;f=((a=a+Math.imul(d,tt)|0)+(n>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(E,N),n=(n=Math.imul(E,q))+Math.imul(A,N)|0,a=Math.imul(A,q),i=i+Math.imul(M,H)|0,n=(n=n+Math.imul(M,W)|0)+Math.imul(k,H)|0,a=a+Math.imul(k,W)|0,i=i+Math.imul(_,V)|0,n=(n=n+Math.imul(_,Y)|0)+Math.imul(w,V)|0,a=a+Math.imul(w,Y)|0,i=i+Math.imul(m,X)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(v,X)|0,a=a+Math.imul(v,J)|0,i=i+Math.imul(p,Q)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(b,Q)|0,a=a+Math.imul(b,tt)|0;var wt=(f+(i=i+Math.imul(u,rt)|0)|0)+((8191&(n=(n=n+Math.imul(u,it)|0)+Math.imul(d,rt)|0))<<13)|0;f=((a=a+Math.imul(d,it)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(I,N),n=(n=Math.imul(I,q))+Math.imul(B,N)|0,a=Math.imul(B,q),i=i+Math.imul(E,H)|0,n=(n=n+Math.imul(E,W)|0)+Math.imul(A,H)|0,a=a+Math.imul(A,W)|0,i=i+Math.imul(M,V)|0,n=(n=n+Math.imul(M,Y)|0)+Math.imul(k,V)|0,a=a+Math.imul(k,Y)|0,i=i+Math.imul(_,X)|0,n=(n=n+Math.imul(_,J)|0)+Math.imul(w,X)|0,a=a+Math.imul(w,J)|0,i=i+Math.imul(m,Q)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(v,Q)|0,a=a+Math.imul(v,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(b,rt)|0,a=a+Math.imul(b,it)|0;var St=(f+(i=i+Math.imul(u,at)|0)|0)+((8191&(n=(n=n+Math.imul(u,st)|0)+Math.imul(d,at)|0))<<13)|0;f=((a=a+Math.imul(d,st)|0)+(n>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(O,N),n=(n=Math.imul(O,q))+Math.imul(L,N)|0,a=Math.imul(L,q),i=i+Math.imul(I,H)|0,n=(n=n+Math.imul(I,W)|0)+Math.imul(B,H)|0,a=a+Math.imul(B,W)|0,i=i+Math.imul(E,V)|0,n=(n=n+Math.imul(E,Y)|0)+Math.imul(A,V)|0,a=a+Math.imul(A,Y)|0,i=i+Math.imul(M,X)|0,n=(n=n+Math.imul(M,J)|0)+Math.imul(k,X)|0,a=a+Math.imul(k,J)|0,i=i+Math.imul(_,Q)|0,n=(n=n+Math.imul(_,tt)|0)+Math.imul(w,Q)|0,a=a+Math.imul(w,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(v,rt)|0,a=a+Math.imul(v,it)|0,i=i+Math.imul(p,at)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(b,at)|0,a=a+Math.imul(b,st)|0;var Mt=(f+(i=i+Math.imul(u,ct)|0)|0)+((8191&(n=(n=n+Math.imul(u,ft)|0)+Math.imul(d,ct)|0))<<13)|0;f=((a=a+Math.imul(d,ft)|0)+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(j,N),n=(n=Math.imul(j,q))+Math.imul(P,N)|0,a=Math.imul(P,q),i=i+Math.imul(O,H)|0,n=(n=n+Math.imul(O,W)|0)+Math.imul(L,H)|0,a=a+Math.imul(L,W)|0,i=i+Math.imul(I,V)|0,n=(n=n+Math.imul(I,Y)|0)+Math.imul(B,V)|0,a=a+Math.imul(B,Y)|0,i=i+Math.imul(E,X)|0,n=(n=n+Math.imul(E,J)|0)+Math.imul(A,X)|0,a=a+Math.imul(A,J)|0,i=i+Math.imul(M,Q)|0,n=(n=n+Math.imul(M,tt)|0)+Math.imul(k,Q)|0,a=a+Math.imul(k,tt)|0,i=i+Math.imul(_,rt)|0,n=(n=n+Math.imul(_,it)|0)+Math.imul(w,rt)|0,a=a+Math.imul(w,it)|0,i=i+Math.imul(m,at)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(v,at)|0,a=a+Math.imul(v,st)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(b,ct)|0,a=a+Math.imul(b,ft)|0;var kt=(f+(i=i+Math.imul(u,ut)|0)|0)+((8191&(n=(n=n+Math.imul(u,dt)|0)+Math.imul(d,ut)|0))<<13)|0;f=((a=a+Math.imul(d,dt)|0)+(n>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(z,N),n=(n=Math.imul(z,q))+Math.imul(D,N)|0,a=Math.imul(D,q),i=i+Math.imul(j,H)|0,n=(n=n+Math.imul(j,W)|0)+Math.imul(P,H)|0,a=a+Math.imul(P,W)|0,i=i+Math.imul(O,V)|0,n=(n=n+Math.imul(O,Y)|0)+Math.imul(L,V)|0,a=a+Math.imul(L,Y)|0,i=i+Math.imul(I,X)|0,n=(n=n+Math.imul(I,J)|0)+Math.imul(B,X)|0,a=a+Math.imul(B,J)|0,i=i+Math.imul(E,Q)|0,n=(n=n+Math.imul(E,tt)|0)+Math.imul(A,Q)|0,a=a+Math.imul(A,tt)|0,i=i+Math.imul(M,rt)|0,n=(n=n+Math.imul(M,it)|0)+Math.imul(k,rt)|0,a=a+Math.imul(k,it)|0,i=i+Math.imul(_,at)|0,n=(n=n+Math.imul(_,st)|0)+Math.imul(w,at)|0,a=a+Math.imul(w,st)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(v,ct)|0,a=a+Math.imul(v,ft)|0,i=i+Math.imul(p,ut)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(b,ut)|0,a=a+Math.imul(b,dt)|0;var xt=(f+(i=i+Math.imul(u,pt)|0)|0)+((8191&(n=(n=n+Math.imul(u,bt)|0)+Math.imul(d,pt)|0))<<13)|0;f=((a=a+Math.imul(d,bt)|0)+(n>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(z,H),n=(n=Math.imul(z,W))+Math.imul(D,H)|0,a=Math.imul(D,W),i=i+Math.imul(j,V)|0,n=(n=n+Math.imul(j,Y)|0)+Math.imul(P,V)|0,a=a+Math.imul(P,Y)|0,i=i+Math.imul(O,X)|0,n=(n=n+Math.imul(O,J)|0)+Math.imul(L,X)|0,a=a+Math.imul(L,J)|0,i=i+Math.imul(I,Q)|0,n=(n=n+Math.imul(I,tt)|0)+Math.imul(B,Q)|0,a=a+Math.imul(B,tt)|0,i=i+Math.imul(E,rt)|0,n=(n=n+Math.imul(E,it)|0)+Math.imul(A,rt)|0,a=a+Math.imul(A,it)|0,i=i+Math.imul(M,at)|0,n=(n=n+Math.imul(M,st)|0)+Math.imul(k,at)|0,a=a+Math.imul(k,st)|0,i=i+Math.imul(_,ct)|0,n=(n=n+Math.imul(_,ft)|0)+Math.imul(w,ct)|0,a=a+Math.imul(w,ft)|0,i=i+Math.imul(m,ut)|0,n=(n=n+Math.imul(m,dt)|0)+Math.imul(v,ut)|0,a=a+Math.imul(v,dt)|0;var Et=(f+(i=i+Math.imul(p,pt)|0)|0)+((8191&(n=(n=n+Math.imul(p,bt)|0)+Math.imul(b,pt)|0))<<13)|0;f=((a=a+Math.imul(b,bt)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(z,V),n=(n=Math.imul(z,Y))+Math.imul(D,V)|0,a=Math.imul(D,Y),i=i+Math.imul(j,X)|0,n=(n=n+Math.imul(j,J)|0)+Math.imul(P,X)|0,a=a+Math.imul(P,J)|0,i=i+Math.imul(O,Q)|0,n=(n=n+Math.imul(O,tt)|0)+Math.imul(L,Q)|0,a=a+Math.imul(L,tt)|0,i=i+Math.imul(I,rt)|0,n=(n=n+Math.imul(I,it)|0)+Math.imul(B,rt)|0,a=a+Math.imul(B,it)|0,i=i+Math.imul(E,at)|0,n=(n=n+Math.imul(E,st)|0)+Math.imul(A,at)|0,a=a+Math.imul(A,st)|0,i=i+Math.imul(M,ct)|0,n=(n=n+Math.imul(M,ft)|0)+Math.imul(k,ct)|0,a=a+Math.imul(k,ft)|0,i=i+Math.imul(_,ut)|0,n=(n=n+Math.imul(_,dt)|0)+Math.imul(w,ut)|0,a=a+Math.imul(w,dt)|0;var At=(f+(i=i+Math.imul(m,pt)|0)|0)+((8191&(n=(n=n+Math.imul(m,bt)|0)+Math.imul(v,pt)|0))<<13)|0;f=((a=a+Math.imul(v,bt)|0)+(n>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(z,X),n=(n=Math.imul(z,J))+Math.imul(D,X)|0,a=Math.imul(D,J),i=i+Math.imul(j,Q)|0,n=(n=n+Math.imul(j,tt)|0)+Math.imul(P,Q)|0,a=a+Math.imul(P,tt)|0,i=i+Math.imul(O,rt)|0,n=(n=n+Math.imul(O,it)|0)+Math.imul(L,rt)|0,a=a+Math.imul(L,it)|0,i=i+Math.imul(I,at)|0,n=(n=n+Math.imul(I,st)|0)+Math.imul(B,at)|0,a=a+Math.imul(B,st)|0,i=i+Math.imul(E,ct)|0,n=(n=n+Math.imul(E,ft)|0)+Math.imul(A,ct)|0,a=a+Math.imul(A,ft)|0,i=i+Math.imul(M,ut)|0,n=(n=n+Math.imul(M,dt)|0)+Math.imul(k,ut)|0,a=a+Math.imul(k,dt)|0;var Ct=(f+(i=i+Math.imul(_,pt)|0)|0)+((8191&(n=(n=n+Math.imul(_,bt)|0)+Math.imul(w,pt)|0))<<13)|0;f=((a=a+Math.imul(w,bt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(z,Q),n=(n=Math.imul(z,tt))+Math.imul(D,Q)|0,a=Math.imul(D,tt),i=i+Math.imul(j,rt)|0,n=(n=n+Math.imul(j,it)|0)+Math.imul(P,rt)|0,a=a+Math.imul(P,it)|0,i=i+Math.imul(O,at)|0,n=(n=n+Math.imul(O,st)|0)+Math.imul(L,at)|0,a=a+Math.imul(L,st)|0,i=i+Math.imul(I,ct)|0,n=(n=n+Math.imul(I,ft)|0)+Math.imul(B,ct)|0,a=a+Math.imul(B,ft)|0,i=i+Math.imul(E,ut)|0,n=(n=n+Math.imul(E,dt)|0)+Math.imul(A,ut)|0,a=a+Math.imul(A,dt)|0;var It=(f+(i=i+Math.imul(M,pt)|0)|0)+((8191&(n=(n=n+Math.imul(M,bt)|0)+Math.imul(k,pt)|0))<<13)|0;f=((a=a+Math.imul(k,bt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(z,rt),n=(n=Math.imul(z,it))+Math.imul(D,rt)|0,a=Math.imul(D,it),i=i+Math.imul(j,at)|0,n=(n=n+Math.imul(j,st)|0)+Math.imul(P,at)|0,a=a+Math.imul(P,st)|0,i=i+Math.imul(O,ct)|0,n=(n=n+Math.imul(O,ft)|0)+Math.imul(L,ct)|0,a=a+Math.imul(L,ft)|0,i=i+Math.imul(I,ut)|0,n=(n=n+Math.imul(I,dt)|0)+Math.imul(B,ut)|0,a=a+Math.imul(B,dt)|0;var Bt=(f+(i=i+Math.imul(E,pt)|0)|0)+((8191&(n=(n=n+Math.imul(E,bt)|0)+Math.imul(A,pt)|0))<<13)|0;f=((a=a+Math.imul(A,bt)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(z,at),n=(n=Math.imul(z,st))+Math.imul(D,at)|0,a=Math.imul(D,st),i=i+Math.imul(j,ct)|0,n=(n=n+Math.imul(j,ft)|0)+Math.imul(P,ct)|0,a=a+Math.imul(P,ft)|0,i=i+Math.imul(O,ut)|0,n=(n=n+Math.imul(O,dt)|0)+Math.imul(L,ut)|0,a=a+Math.imul(L,dt)|0;var Tt=(f+(i=i+Math.imul(I,pt)|0)|0)+((8191&(n=(n=n+Math.imul(I,bt)|0)+Math.imul(B,pt)|0))<<13)|0;f=((a=a+Math.imul(B,bt)|0)+(n>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(z,ct),n=(n=Math.imul(z,ft))+Math.imul(D,ct)|0,a=Math.imul(D,ft),i=i+Math.imul(j,ut)|0,n=(n=n+Math.imul(j,dt)|0)+Math.imul(P,ut)|0,a=a+Math.imul(P,dt)|0;var Ot=(f+(i=i+Math.imul(O,pt)|0)|0)+((8191&(n=(n=n+Math.imul(O,bt)|0)+Math.imul(L,pt)|0))<<13)|0;f=((a=a+Math.imul(L,bt)|0)+(n>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,i=Math.imul(z,ut),n=(n=Math.imul(z,dt))+Math.imul(D,ut)|0,a=Math.imul(D,dt);var Lt=(f+(i=i+Math.imul(j,pt)|0)|0)+((8191&(n=(n=n+Math.imul(j,bt)|0)+Math.imul(P,pt)|0))<<13)|0;f=((a=a+Math.imul(P,bt)|0)+(n>>>13)|0)+(Lt>>>26)|0,Lt&=67108863;var $t=(f+(i=Math.imul(z,pt))|0)+((8191&(n=(n=Math.imul(z,bt))+Math.imul(D,pt)|0))<<13)|0;return f=((a=Math.imul(D,bt))+(n>>>13)|0)+($t>>>26)|0,$t&=67108863,c[0]=gt,c[1]=mt,c[2]=vt,c[3]=yt,c[4]=_t,c[5]=wt,c[6]=St,c[7]=Mt,c[8]=kt,c[9]=xt,c[10]=Et,c[11]=At,c[12]=Ct,c[13]=It,c[14]=Bt,c[15]=Tt,c[16]=Ot,c[17]=Lt,c[18]=$t,0!==f&&(c[19]=f,r.length++),r};function m(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,a=0;a>>26)|0)>>>26,s&=67108863}r.words[a]=o,i=s,s=n}return 0!==i?r.words[a]=i:r.length--,r._strip()}function v(t,e,r){return m(t,e,r)}function y(t,e){this.x=t,this.y=e}Math.imul||(g=b),a.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?b(this,t,e):r<1024?m(this,t,e):v(this,t,e)},y.prototype.makeRBT=function(t){for(var e=new Array(t),r=a.prototype._countBits(t)-1,i=0;i>=1;return i},y.prototype.permute=function(t,e,r,i,n,a){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&a,a>>>=13;for(s=2*e;s>=26,r+=a/67108864|0,r+=s>>>26,this.words[n]=67108863&s}return 0!==r&&(this.words[n]=r,this.length++),e?this.ineg():this},a.prototype.muln=function(t){return this.clone().imuln(t)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n&1}return e}(t);if(0===e.length)return new a(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var a=t%26,s=Math.min((t-a)/26,this.length),o=67108863^67108863>>>a<s)for(this.length-=s,f=0;f=0&&(0!==h||f>=n);f--){var u=0|this.words[f];this.words[f]=h<<26-a|u>>>a,h=u&o}return c&&0!==h&&(c.words[c.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},a.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},a.prototype.shln=function(t){return this.clone().ishln(t)},a.prototype.ushln=function(t){return this.clone().iushln(t)},a.prototype.shrn=function(t){return this.clone().ishrn(t)},a.prototype.ushrn=function(t){return this.clone().iushrn(t)},a.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},a.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(c/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===o)return this._strip();for(i(-1===o),o=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this._strip()},a.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!==(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var o,c=i.length-n.length;if("mod"!==e){(o=new a(null)).length=c+1,o.words=new Array(o.length);for(var f=0;f=0;u--){var d=67108864*(0|i.words[n.length+u])+(0|i.words[n.length+u-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,u);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,u),i.isZero()||(i.negative^=1);o&&(o.words[u]=d)}return o&&o._strip(),i._strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:o||null,mod:i}},a.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===t.negative?(o=this.neg().divmod(t,e),"mod"!==e&&(n=o.div.neg()),"div"!==e&&(s=o.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(o=this.divmod(t.neg(),e),"mod"!==e&&(n=o.div.neg()),{div:n,mod:o.mod}):0!=(this.negative&t.negative)?(o=this.neg().divmod(t.neg(),e),"div"!==e&&(s=o.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:o.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new a(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new a(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new a(this.modrn(t.words[0]))}:this._wordDiv(t,e);var n,s,o},a.prototype.div=function(t){return this.divmod(t,"div",!1).div},a.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},a.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},a.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},a.prototype.modrn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=(1<<26)%t,n=0,a=this.length-1;a>=0;a--)n=(r*n+(0|this.words[a]))%t;return e?-n:n},a.prototype.modn=function(t){return this.modrn(t)},a.prototype.idivn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*r;this.words[n]=a/t|0,r=a%t}return this._strip(),e?this.ineg():this},a.prototype.divn=function(t){return this.clone().idivn(t)},a.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new a(1),s=new a(0),o=new a(0),c=new a(1),f=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++f;for(var h=r.clone(),u=e.clone();!e.isZero();){for(var d=0,l=1;0==(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(h),s.isub(u)),n.iushrn(1),s.iushrn(1);for(var p=0,b=1;0==(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(o.isOdd()||c.isOdd())&&(o.iadd(h),c.isub(u)),o.iushrn(1),c.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(o),s.isub(c)):(r.isub(e),o.isub(n),c.isub(s))}return{a:o,b:c,gcd:r.iushln(f)}},a.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new a(1),o=new a(0),c=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var f=0,h=1;0==(e.words[0]&h)&&f<26;++f,h<<=1);if(f>0)for(e.iushrn(f);f-- >0;)s.isOdd()&&s.iadd(c),s.iushrn(1);for(var u=0,d=1;0==(r.words[0]&d)&&u<26;++u,d<<=1);if(u>0)for(r.iushrn(u);u-- >0;)o.isOdd()&&o.iadd(c),o.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(o)):(r.isub(e),o.isub(s))}return(n=0===e.cmpn(1)?s:o).cmpn(0)<0&&n.iadd(t),n},a.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var a=e;e=r,r=a}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},a.prototype.invm=function(t){return this.egcd(t).a.umod(t)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(t){return this.words[0]&t},a.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,o&=67108863,this.words[s]=o}return 0!==a&&(this.words[s]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},a.prototype.gtn=function(t){return 1===this.cmpn(t)},a.prototype.gt=function(t){return 1===this.cmp(t)},a.prototype.gten=function(t){return this.cmpn(t)>=0},a.prototype.gte=function(t){return this.cmp(t)>=0},a.prototype.ltn=function(t){return-1===this.cmpn(t)},a.prototype.lt=function(t){return-1===this.cmp(t)},a.prototype.lten=function(t){return this.cmpn(t)<=0},a.prototype.lte=function(t){return this.cmp(t)<=0},a.prototype.eqn=function(t){return 0===this.cmpn(t)},a.prototype.eq=function(t){return 0===this.cmp(t)},a.red=function(t){return new E(t)},a.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(t){return this.red=t,this},a.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},a.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},a.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},a.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},a.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},a.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},a.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},a.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var _={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new a(e,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function S(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function M(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function k(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function E(t){if("string"==typeof t){var e=a._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function A(t){E.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new a(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(S,w),S.prototype.split=function(t,e){for(var r=Math.min(t.length,9),i=0;i>>22,n=a}n>>>=22,t.words[i-10]=n,0===n&&t.length>10?t.length-=10:t.length-=9},S.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},a._prime=function(t){if(_[t])return _[t];var e;if("k256"===t)e=new S;else if("p224"===t)e=new M;else if("p192"===t)e=new k;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new x}return _[t]=e,e},E.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},E.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},E.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(h(t,t.umod(this.m)._forceRed(this)),t)},E.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},E.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},E.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},E.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},E.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},E.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},E.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},E.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},E.prototype.isqr=function(t){return this.imul(t,t.clone())},E.prototype.sqr=function(t){return this.mul(t,t)},E.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new a(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var o=new a(1).toRed(this),c=o.redNeg(),f=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new a(2*h*h).toRed(this);0!==this.pow(h,f).cmp(c);)h.redIAdd(c);for(var u=this.pow(h,n),d=this.pow(t,n.addn(1).iushrn(1)),l=this.pow(t,n),p=s;0!==l.cmp(o);){for(var b=l,g=0;0!==b.cmp(o);g++)b=b.redSqr();i(g=0;i--){for(var f=e.words[i],h=c-1;h>=0;h--){var u=f>>h&1;n!==r[0]&&(n=this.sqr(n)),0!==u||0!==s?(s<<=1,s|=u,(4===++o||0===i&&0===h)&&(n=this.mul(n,r[s]),o=0,s=0)):o=0}c=26}return n},E.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},E.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},a.mont=function(t){return new A(t)},n(A,E),A.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},A.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},A.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},A.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new a(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},A.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,r(26)(t))},,function(t,e){function r(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=r,r.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)}},function(t,e,r){"use strict";var i=e,n=r(185),a=r(187),s=r(270);i.assert=a,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=function(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-c:c,a.isubn(o)):o=0,i[s]=o,a.iushrn(1)}return i},i.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i,n=0,a=0;t.cmpn(-n)>0||e.cmpn(-a)>0;){var s,o,c=t.andln(3)+n&3,f=e.andln(3)+a&3;3===c&&(c=-1),3===f&&(f=-1),s=0==(1&c)?0:3!==(i=t.andln(7)+n&7)&&5!==i||2!==f?c:-c,r[0].push(s),o=0==(1&f)?0:3!==(i=e.andln(7)+a&7)&&5!==i||2!==c?f:-f,r[1].push(o),2*n===s+1&&(n=1-n),2*a===o+1&&(a=1-a),t.iushrn(1),e.iushrn(1)}return r},i.cachedProperty=function(t,e,r){var i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(t){return"string"==typeof t?i.toArray(t,"hex"):t},i.intFromLE=function(t){return new n(t,"hex","le")}},function(t,e,r){"use strict";var i=r(0).a.extend({name:"MyTransition",props:{delay:{type:Number,default:0},duration:{type:Number,default:.25}},methods:{setStyle(t){t.style.transition=`transform ${this.duration}s ease-in-out ${this.delay}s, opacity ${this.duration}s ease-in-out ${this.delay}s`,t.style.transform="translateY(-20px)",t.style.opacity="0"},unsetStyle(t){t.style.transform="translateY(0)",t.style.opacity="1"}}}),n=(r(442),r(1)),a=Object(n.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"drop",appear:""},on:{appear:this.setStyle,"after-appear":this.unsetStyle,enter:this.setStyle,"after-enter":this.unsetStyle,"before-leave":this.setStyle}},[this._t("default")],2)}),[],!1,null,null,null);e.a=a.exports},function(t,e,r){"use strict"; -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */var i=r(354),n=r(355),a=r(245);function s(){return c.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function p(t,e){if(c.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return N(t).length;default:if(i)return U(t).length;e=(""+e).toLowerCase(),i=!0}}function b(t,e,r){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return I(this,e,r);case"utf8":case"utf-8":return E(this,e,r);case"ascii":return A(this,e,r);case"latin1":case"binary":return C(this,e,r);case"base64":return x(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function g(t,e,r){var i=t[e];t[e]=t[r],t[r]=i}function m(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=c.from(e,i)),c.isBuffer(e))return 0===e.length?-1:v(t,e,r,i,n);if("number"==typeof e)return e&=255,c.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,i,n){var a,s=1,o=t.length,c=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,o/=2,c/=2,r/=2}function f(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){var h=-1;for(a=r;ao&&(r=o-c),a=r;a>=0;a--){for(var u=!0,d=0;dn&&(i=n):i=n;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");i>a/2&&(i=a/2);for(var s=0;s>8,n=r%256,a.push(n),a.push(i);return a}(e,t.length-r),t,r,i)}function x(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function E(t,e,r){r=Math.min(t.length,r);for(var i=[],n=e;n239?4:f>223?3:f>191?2:1;if(n+u<=r)switch(u){case 1:f<128&&(h=f);break;case 2:128==(192&(a=t[n+1]))&&(c=(31&f)<<6|63&a)>127&&(h=c);break;case 3:a=t[n+1],s=t[n+2],128==(192&a)&&128==(192&s)&&(c=(15&f)<<12|(63&a)<<6|63&s)>2047&&(c<55296||c>57343)&&(h=c);break;case 4:a=t[n+1],s=t[n+2],o=t[n+3],128==(192&a)&&128==(192&s)&&128==(192&o)&&(c=(15&f)<<18|(63&a)<<12|(63&s)<<6|63&o)>65535&&c<1114112&&(h=c)}null===h?(h=65533,u=1):h>65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h),n+=u}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",i=0;for(;i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},c.prototype.compare=function(t,e,r,i,n){if(!c.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;for(var a=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0),o=Math.min(a,s),f=this.slice(i,n),h=t.slice(e,r),u=0;un)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var a=!1;;)switch(i){case"hex":return y(this,t,e,r);case"utf8":case"utf-8":return _(this,t,e,r);case"ascii":return w(this,t,e,r);case"latin1":case"binary":return S(this,t,e,r);case"base64":return M(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function A(t,e,r){var i="";r=Math.min(t.length,r);for(var n=e;ni)&&(r=i);for(var n="",a=e;ar)throw new RangeError("Trying to access beyond buffer length")}function O(t,e,r,i,n,a){if(!c.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function L(t,e,r,i){e<0&&(e=65535+e+1);for(var n=0,a=Math.min(t.length-r,2);n>>8*(i?n:1-n)}function $(t,e,r,i){e<0&&(e=4294967295+e+1);for(var n=0,a=Math.min(t.length-r,4);n>>8*(i?n:3-n)&255}function j(t,e,r,i,n,a){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function P(t,e,r,i,a){return a||j(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function R(t,e,r,i,a){return a||j(t,0,r,8),n.write(t,e,r,i,52,8),r+8}c.prototype.slice=function(t,e){var r,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e0&&(n*=256);)i+=this[t+--e]*n;return i},c.prototype.readUInt8=function(t,e){return e||T(t,1,this.length),this[t]},c.prototype.readUInt16LE=function(t,e){return e||T(t,2,this.length),this[t]|this[t+1]<<8},c.prototype.readUInt16BE=function(t,e){return e||T(t,2,this.length),this[t]<<8|this[t+1]},c.prototype.readUInt32LE=function(t,e){return e||T(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},c.prototype.readUInt32BE=function(t,e){return e||T(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},c.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||T(t,e,this.length);for(var i=this[t],n=1,a=0;++a=(n*=128)&&(i-=Math.pow(2,8*e)),i},c.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||T(t,e,this.length);for(var i=e,n=1,a=this[t+--i];i>0&&(n*=256);)a+=this[t+--i]*n;return a>=(n*=128)&&(a-=Math.pow(2,8*e)),a},c.prototype.readInt8=function(t,e){return e||T(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},c.prototype.readInt16LE=function(t,e){e||T(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt16BE=function(t,e){e||T(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},c.prototype.readInt32LE=function(t,e){return e||T(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},c.prototype.readInt32BE=function(t,e){return e||T(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},c.prototype.readFloatLE=function(t,e){return e||T(t,4,this.length),n.read(this,t,!0,23,4)},c.prototype.readFloatBE=function(t,e){return e||T(t,4,this.length),n.read(this,t,!1,23,4)},c.prototype.readDoubleLE=function(t,e){return e||T(t,8,this.length),n.read(this,t,!0,52,8)},c.prototype.readDoubleBE=function(t,e){return e||T(t,8,this.length),n.read(this,t,!1,52,8)},c.prototype.writeUIntLE=function(t,e,r,i){(t=+t,e|=0,r|=0,i)||O(this,t,e,r,Math.pow(2,8*r)-1,0);var n=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+n]=t/a&255;return e+r},c.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,1,255,0),c.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},c.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},c.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},c.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):$(this,t,e,!0),e+4},c.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):$(this,t,e,!1),e+4},c.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}var a=0,s=1,o=0;for(this[e]=255&t;++a>0)-o&255;return e+r},c.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e|=0,!i){var n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}var a=r-1,s=1,o=0;for(this[e+a]=255&t;--a>=0&&(s*=256);)t<0&&0===o&&0!==this[e+a+1]&&(o=1),this[e+a]=(t/s>>0)-o&255;return e+r},c.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,1,127,-128),c.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},c.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},c.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},c.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):$(this,t,e,!0),e+4},c.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||O(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):$(this,t,e,!1),e+4},c.prototype.writeFloatLE=function(t,e,r){return P(this,t,e,!0,r)},c.prototype.writeFloatBE=function(t,e,r){return P(this,t,e,!1,r)},c.prototype.writeDoubleLE=function(t,e,r){return R(this,t,e,!0,r)},c.prototype.writeDoubleBE=function(t,e,r){return R(this,t,e,!1,r)},c.prototype.copy=function(t,e,r,i){if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e=0;--n)t[n+e]=this[n+r];else if(a<1e3||!c.TYPED_ARRAY_SUPPORT)for(n=0;n>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(a=e;a55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&a.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&a.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function N(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(z,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function q(t,e,r,i){for(var n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}},function(t,e,r){"use strict";var i=r(187),n=r(184);function a(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function s(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function o(t){return 1===t.length?"0"+t:t}function c(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=n,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>6|192,r[i++]=63&s|128):a(t,n)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++n)),r[i++]=s>>18|240,r[i++]=s>>12&63|128,r[i++]=s>>6&63|128,r[i++]=63&s|128):(r[i++]=s>>12|224,r[i++]=s>>6&63|128,r[i++]=63&s|128)}else for(n=0;n>>0}return s},e.split32=function(t,e){for(var r=new Array(4*t.length),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=255&a):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=255&a)}return r},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,r){return t+e+r>>>0},e.sum32_4=function(t,e,r,i){return t+e+r+i>>>0},e.sum32_5=function(t,e,r,i,n){return t+e+r+i+n>>>0},e.sum64=function(t,e,r,i){var n=t[e],a=i+t[e+1]>>>0,s=(a>>0,t[e+1]=a},e.sum64_hi=function(t,e,r,i){return(e+i>>>0>>0},e.sum64_lo=function(t,e,r,i){return e+i>>>0},e.sum64_4_hi=function(t,e,r,i,n,a,s,o){var c=0,f=e;return c+=(f=f+i>>>0)>>0)>>0)>>0},e.sum64_4_lo=function(t,e,r,i,n,a,s,o){return e+i+a+o>>>0},e.sum64_5_hi=function(t,e,r,i,n,a,s,o,c,f){var h=0,u=e;return h+=(u=u+i>>>0)>>0)>>0)>>0)>>0},e.sum64_5_lo=function(t,e,r,i,n,a,s,o,c,f){return e+i+a+o+f>>>0},e.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},e.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},e.shr64_hi=function(t,e,r){return t>>>r},e.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},function(t,e,r){"use strict";r.d(e,"d",(function(){return i})),r.d(e,"a",(function(){return a})),r.d(e,"j",(function(){return s})),r.d(e,"i",(function(){return o})),r.d(e,"f",(function(){return c})),r.d(e,"g",(function(){return f})),r.d(e,"h",(function(){return h})),r.d(e,"c",(function(){return u})),r.d(e,"b",(function(){return d})),r.d(e,"e",(function(){return l})),r.d(e,"k",(function(){return p}));const i=/#.*$/u,n=/\.(md|html)$/u,a=/\/$/u,s=/^[a-z]+:/iu,o=t=>decodeURI(t).replace(i,"").replace(n,""),c=t=>s.test(t),f=t=>t.startsWith("mailto:"),h=t=>t.startsWith("tel:"),u=t=>{if(c(t))return t;const e=i.exec(t),r=e?e[0]:"",n=o(t);return n.endsWith("/")?t:`${n}.html${r}`},d=t=>/(\.html|\/)$/u.test(t)?t:t+"/",l=(t,e)=>{const r=decodeURIComponent(t.hash),n=(t=>{const e=i.exec(t);return e?e[0]:""})(e);if(n&&r!==n)return!1;return o(t.path)===o(e)},p=(t,e,r)=>{if(c(t))return t;const i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return`${e}${t}`;const n=e.split("/");r&&n[n.length-1]||n.pop();const a=t.replace(/^\//u,"").split("/");for(let t=0;t4294967295)throw new RangeError("requested too many random bytes");var r=i.allocUnsafe(t);if(t>0)if(t>65536)for(var a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=n},function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));const i=(t,e,r)=>{if(t)if(t.startsWith("/"))r.path!==t&&e.push(t);else if(t.startsWith("http://")||t.startsWith("https://")||t.startsWith("mailto:"))window&&window.open(t);else{const i=r.path.slice(0,r.path.lastIndexOf("/"));e.push(`${i}/${encodeURI(t)}`)}}},function(t,e,r){"use strict";var i=r(0),n=r(192),a=i.a.extend({name:"NavLink",props:{item:{type:Object,required:!0}},computed:{link(){return Object(n.c)(this.item.link)},iconPrefix(){const{iconPrefix:t}=this.$themeConfig;return""===t?"":t||"icon-"},active(){return this.$site.locales&&Object.keys(this.$site.locales).some(t=>t===this.link)||"/"===this.link?this.$route.path===this.link:this.$route.path.startsWith(this.link)},isNonHttpURI(){return Object(n.g)(this.link)||Object(n.h)(this.link)},isBlankTarget(){return"_blank"===this.target},isInternal(){return!Object(n.f)(this.link)&&!this.isBlankTarget},target(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(n.f)(this.link)?"_blank":""},rel(){return this.isNonHttpURI||!1===this.item.rel?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":null}},methods:{focusoutAction(){this.$emit("focusout")}}}),s=(r(424),r(1)),o=Object(s.a)(a,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.isInternal?r("RouterLink",{staticClass:"nav-link",class:{active:t.active},attrs:{to:t.link},nativeOn:{focusout:function(e){return t.focusoutAction(e)}}},[t.item.icon?r("i",{class:"iconfont "+t.iconPrefix+t.item.icon}):t._e(),t._v("\n "+t._s(t.item.text)+"\n")]):r("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t.item.icon?r("i",{class:"iconfont "+t.iconPrefix+t.item.icon}):t._e(),t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?r("OutboundLink"):t._e()],1)}),[],!1,null,null,null);e.a=o.exports},function(t,e,r){"use strict";var i=r(184),n=r(215),a=r(221),s=r(222),o=r(193);function c(t){o.call(this,"digest"),this._hash=t}i(c,o),c.prototype._update=function(t){this._hash.update(t)},c.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new n:"rmd160"===t||"ripemd160"===t?new a:new c(s(t))}},function(t,e,r){(e=t.exports=r(247)).Stream=e,e.Readable=e,e.Writable=r(219),e.Duplex=r(195),e.Transform=r(250),e.PassThrough=r(358)},function(t,e,r){(function(t){function r(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===r(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===r(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===r(t)},e.isError=function(t){return"[object Error]"===r(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=t.isBuffer}).call(this,r(190).Buffer)},function(t,e,r){(function(e){t.exports=function(t,r){for(var i=Math.min(t.length,r.length),n=new e(i),a=0;a=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=t>>>16&255,i[n++]=t>>>8&255,i[n++]=255&t}else for(i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n++]=t>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,a=8;a{const e=i(t instanceof Date||"number"==typeof t?t:t.trim());if(e.isValid()){const t=e.year(),r=e.month()+1,i=e.date(),n=e.hour(),a=e.minute(),s=e.second(),o=e.millisecond();return 8!==n&&0!==n||0!==a||0!==s||0!==o?[t,r,i,n,a,s]:[t,r,i,void 0,void 0,void 0]}const[,r,n,a,s,o,c]=/(?:(\d+)[/-](\d+)[/-](\d+))?\s*(?:(\d+):(\d+)(?::(\d+))?)?/u.exec(t.trim())||[],f=t=>void 0===t?void 0:Number(t);return[(u=f(r),u&&u<100?u+2e3:u),f(n),f(a),f(s),f(o),(h=f(c),s&&o&&!c?0:h)];var h,u},a=(t,e)=>t.filter(t=>{const{frontmatter:{article:r,blogpage:i,home:n},title:a}=t;return void 0!==a&&!0!==i&&!0!==n&&!1!==r&&(!e||e(t))}),s=(t,e)=>t.slice(0).sort((t,r)=>{if(e){const i=t.frontmatter[e],n=r.frontmatter[e];if(i&&n&&i!==n)return Number(n)-Number(i);if(i&&!n)return-1;if(!i&&n)return 1}return((t,e)=>{if(!t)return 1;if(!e)return-1;const r=(t,e)=>0===t.length?0:void 0===e[0]?void 0===t[0]||0===t[0]?0:-1:void 0===t[0]?0===e[0]?0:1:e[0]-t[0]==0?(t.shift(),e.shift(),r(t,e)):e[0]-t[0];return r(n(t),n(e))})(t.frontmatter.time||t.frontmatter.date||t.createTimeStamp,r.frontmatter.time||r.frontmatter.date||r.createTimeStamp)})},function(t,e,r){"use strict";var i=r(0),n=r(186),a=r(346),s=r(347),o=r(348),c=r(349),f=r(241),h=r(337),u=r(189),d=r(338),l=r(339),p=r(340),b=r(206);var g=i.a.extend({computed:{$starArticles(){const{pages:t}=this.$site;return Object(b.c)(Object(b.a)(t,t=>Boolean(t.frontmatter.star)),"star")}}}).extend({name:"BlogInfo",components:{ArticleIcon:a.a,ArticleList:f.a,CategoryIcon:s.a,CategoryList:h.a,MyTransition:u.a,TagIcon:o.a,TagList:d.a,TimeIcon:c.a,Timeline:l.a,TimelineList:p.a},data:()=>({active:"category"}),computed:{i18n(){return this.$themeLocaleConfig.blog||Object(n.b)().blog},articleNumber(){return Object(b.a)(this.$site.pages).length}},methods:{setActive(t){this.active=t},navigate(t){this.$route.path!==t&&this.$router.push(t)}}}),m=(r(450),r(1)),v=Object(m.a)(g,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"blog-info-list"},[r("div",{staticClass:"switch-wrapper"},[r("button",{staticClass:"switch-button",on:{click:function(e){return t.setActive("article")}}},[r("div",{staticClass:"icon-wapper",class:{active:"article"===t.active},attrs:{"aria-label":t.i18n.article,"data-balloon-pos":"up"}},[r("ArticleIcon")],1)]),t._v(" "),r("button",{staticClass:"switch-button",on:{click:function(e){return t.setActive("category")}}},[r("div",{staticClass:"icon-wapper",class:{active:"category"===t.active},attrs:{"aria-label":t.i18n.category,"data-balloon-pos":"up"}},[r("CategoryIcon")],1)]),t._v(" "),r("button",{staticClass:"switch-button",on:{click:function(e){return t.setActive("tag")}}},[r("div",{staticClass:"icon-wapper",class:{active:"tag"===t.active},attrs:{"aria-label":t.i18n.tag,"data-balloon-pos":"up"}},[r("TagIcon")],1)]),t._v(" "),r("button",{staticClass:"switch-button",on:{click:function(e){return t.setActive("timeline")}}},[r("div",{staticClass:"icon-wapper",class:{active:"timeline"===t.active},attrs:{"aria-label":t.i18n.timeline,"data-balloon-pos":"up"}},[r("TimeIcon")],1)])]),t._v(" "),"article"===t.active?r("MyTransition",[r("div",{staticClass:"sticky-article-wrapper"},[r("div",{staticClass:"title",on:{click:function(e){return t.navigate("/article/")}}},[r("ArticleIcon"),t._v(" "),r("span",{staticClass:"num"},[t._v(t._s(t.articleNumber))]),t._v("\n "+t._s(t.i18n.article)+"\n ")],1),t._v(" "),r("hr"),t._v(" "),r("ul",{staticClass:"sticky-article-list"},t._l(t.$starArticles,(function(e,i){return r("MyTransition",{key:e.path,attrs:{delay:.08*(i+1)}},[r("li",{staticClass:"sticky-article",domProps:{textContent:t._s(e.title)},on:{click:function(r){return t.navigate(e.path)}}})])})),1)])]):t._e(),t._v(" "),"category"===t.active?r("MyTransition",[r("div",{staticClass:"category-wrapper"},[0!==t.$category.list.length?r("div",{staticClass:"title",on:{click:function(e){return t.navigate("/category/")}}},[r("CategoryIcon"),t._v(" "),r("span",{staticClass:"num"},[t._v(t._s(t.$category.list.length))]),t._v("\n "+t._s(t.i18n.category)+"\n ")],1):t._e(),t._v(" "),r("hr"),t._v(" "),r("MyTransition",{attrs:{delay:.04}},[r("CategoryList")],1)],1)]):t._e(),t._v(" "),"tag"===t.active?r("MyTransition",[r("div",{staticClass:"tag-wrapper"},[0!==t.$tag.list.length?r("div",{staticClass:"title",on:{click:function(e){return t.navigate("/tag/")}}},[r("TagIcon"),t._v(" "),r("span",{staticClass:"num"},[t._v(t._s(t.$tag.list.length))]),t._v("\n "+t._s(t.i18n.tag)+"\n ")],1):t._e(),t._v(" "),r("hr"),t._v(" "),r("MyTransition",{attrs:{delay:.04}},[r("TagList")],1)],1)]):t._e(),t._v(" "),"timeline"===t.active?r("MyTransition",[r("TimelineList")],1):t._e()],1)}),[],!1,null,null,null).exports,y=r(341),_=i.a.extend({name:"BlogInfo",components:{BlogInfoList:v,BloggerInfo:y.a,MyTransition:u.a}}),w=(r(452),Object(m.a)(_,(function(){var t=this.$createElement,e=this._self._c||t;return e("aside",{staticClass:"blog-info-wrapper"},[e("MyTransition",[e("BloggerInfo")],1),this._v(" "),e("MyTransition",{attrs:{delay:.04}},[e("BlogInfoList")],1)],1)}),[],!1,null,null,null));e.a=w.exports},function(t,e,r){"use strict";"undefined"==typeof process||!process.version||0===process.version.indexOf("v0.")||0===process.version.indexOf("v1.")&&0!==process.version.indexOf("v1.8.")?t.exports={nextTick:function(t,e,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var n,a,s=arguments.length;switch(s){case 0:case 1:return process.nextTick(t);case 2:return process.nextTick((function(){t.call(null,e)}));case 3:return process.nextTick((function(){t.call(null,e,r)}));case 4:return process.nextTick((function(){t.call(null,e,r,i)}));default:for(n=new Array(s-1),a=0;a>>24]^h[p>>>16&255]^u[b>>>8&255]^d[255&g]^e[m++],s=f[p>>>24]^h[b>>>16&255]^u[g>>>8&255]^d[255&l]^e[m++],o=f[b>>>24]^h[g>>>16&255]^u[l>>>8&255]^d[255&p]^e[m++],c=f[g>>>24]^h[l>>>16&255]^u[p>>>8&255]^d[255&b]^e[m++],l=a,p=s,b=o,g=c;return a=(i[l>>>24]<<24|i[p>>>16&255]<<16|i[b>>>8&255]<<8|i[255&g])^e[m++],s=(i[p>>>24]<<24|i[b>>>16&255]<<16|i[g>>>8&255]<<8|i[255&l])^e[m++],o=(i[b>>>24]<<24|i[g>>>16&255]<<16|i[l>>>8&255]<<8|i[255&p])^e[m++],c=(i[g>>>24]<<24|i[l>>>16&255]<<16|i[p>>>8&255]<<8|i[255&b])^e[m++],[a>>>=0,s>>>=0,o>>>=0,c>>>=0]}var o=[0,1,2,4,8,16,32,64,128,27,54],c=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],s=0,o=0,c=0;c<256;++c){var f=o^o<<1^o<<2^o<<3^o<<4;f=f>>>8^255&f^99,r[s]=f,i[f]=s;var h=t[s],u=t[h],d=t[u],l=257*t[f]^16843008*f;n[0][s]=l<<24|l>>>8,n[1][s]=l<<16|l>>>16,n[2][s]=l<<8|l>>>24,n[3][s]=l,l=16843009*d^65537*u^257*h^16843008*s,a[0][f]=l<<24|l>>>8,a[1][f]=l<<16|l>>>16,a[2][f]=l<<8|l>>>24,a[3][f]=l,0===s?s=o=1:(s=h^t[t[t[d^h]]],o^=t[t[o]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function f(t){this._key=n(t),this._reset()}f.blockSize=16,f.keySize=32,f.prototype.blockSize=f.blockSize,f.prototype.keySize=f.keySize,f.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=4*(r+1),n=[],a=0;a>>24,s=c.SBOX[s>>>24]<<24|c.SBOX[s>>>16&255]<<16|c.SBOX[s>>>8&255]<<8|c.SBOX[255&s],s^=o[a/e|0]<<24):e>6&&a%e==4&&(s=c.SBOX[s>>>24]<<24|c.SBOX[s>>>16&255]<<16|c.SBOX[s>>>8&255]<<8|c.SBOX[255&s]),n[a]=n[a-e]^s}for(var f=[],h=0;h>>24]]^c.INV_SUB_MIX[1][c.SBOX[d>>>16&255]]^c.INV_SUB_MIX[2][c.SBOX[d>>>8&255]]^c.INV_SUB_MIX[3][c.SBOX[255&d]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=f},f.prototype.encryptBlockRaw=function(t){return s(t=n(t),this._keySchedule,c.SUB_MIX,c.SBOX,this._nRounds)},f.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=i.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r},f.prototype.decryptBlock=function(t){var e=(t=n(t))[1];t[1]=t[3],t[3]=e;var r=s(t,this._invKeySchedule,c.INV_SUB_MIX,c.INV_SBOX,this._nRounds),a=i.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a},f.prototype.scrub=function(){a(this._keySchedule),a(this._invKeySchedule),a(this._key)},t.exports.AES=f},function(t,e,r){var i=r(183).Buffer,n=r(215);t.exports=function(t,e,r,a){if(i.isBuffer(t)||(t=i.from(t,"binary")),e&&(i.isBuffer(e)||(e=i.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var s=r/8,o=i.alloc(s),c=i.alloc(a||0),f=i.alloc(0);s>0||a>0;){var h=new n;h.update(f),h.update(t),e&&h.update(e),f=h.digest();var u=0;if(s>0){var d=o.length-s;u=Math.min(s,f.length),f.copy(o,d,0,u),s-=u}if(u0){var l=c.length-a,p=Math.min(a,f.length-u);f.copy(c,l,u,u+p),a-=p}}return f.fill(0),{key:o,iv:c}}},function(t,e,r){"use strict";var i=r(185),n=r(188),a=n.getNAF,s=n.getJSF,o=n.assert;function c(t,e){this.type=t,this.p=new i(e.p,16),this.red=e.prime?i.red(e.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=e.n&&new i(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function f(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=c,c.prototype.point=function(){throw new Error("Not implemented")},c.prototype.validate=function(){throw new Error("Not implemented")},c.prototype._fixedNafMul=function(t,e){o(t.precomputed);var r=t._getDoubles(),i=a(e,1,this._bitLength),n=(1<=s;h--)c=(c<<1)+i[h];f.push(c)}for(var u=this.jpoint(null,null,null),d=this.jpoint(null,null,null),l=n;l>0;l--){for(s=0;s=0;f--){for(var h=0;f>=0&&0===s[f];f--)h++;if(f>=0&&h++,c=c.dblp(h),f<0)break;var u=s[f];o(0!==u),c="affine"===t.type?u>0?c.mixedAdd(n[u-1>>1]):c.mixedAdd(n[-u-1>>1].neg()):u>0?c.add(n[u-1>>1]):c.add(n[-u-1>>1].neg())}return"affine"===t.type?c.toP():c},c.prototype._wnafMulAdd=function(t,e,r,i,n){var o,c,f,h=this._wnafT1,u=this._wnafT2,d=this._wnafT3,l=0;for(o=0;o=1;o-=2){var b=o-1,g=o;if(1===h[b]&&1===h[g]){var m=[e[b],null,null,e[g]];0===e[b].y.cmp(e[g].y)?(m[1]=e[b].add(e[g]),m[2]=e[b].toJ().mixedAdd(e[g].neg())):0===e[b].y.cmp(e[g].y.redNeg())?(m[1]=e[b].toJ().mixedAdd(e[g]),m[2]=e[b].add(e[g].neg())):(m[1]=e[b].toJ().mixedAdd(e[g]),m[2]=e[b].toJ().mixedAdd(e[g].neg()));var v=[-3,-1,-5,-7,0,7,5,1,3],y=s(r[b],r[g]);for(l=Math.max(y[0].length,l),d[b]=new Array(l),d[g]=new Array(l),c=0;c=0;o--){for(var k=0;o>=0;){var x=!0;for(c=0;c=0&&k++,S=S.dblp(k),o<0)break;for(c=0;c0?f=u[c][E-1>>1]:E<0&&(f=u[c][-E-1>>1].neg()),S="affine"===f.type?S.mixedAdd(f):S.add(f))}}for(o=0;o=Math.ceil((t.bitLength()+1)/e.step)},f.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;nt&&"object"==typeof t.config?Object.keys(t.config).filter(t=>e.startsWith(t)).sort((t,e)=>e.length-t.length):[]},function(t,e,r){(function(t){var i,n,a; -/** - * @license bcrypt.js (c) 2013 Daniel Wirtz - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/bcrypt.js for details - */n=[],void 0===(a="function"==typeof(i=function(){"use strict";var e={},i=null;function n(e){if(t&&t.exports)try{return r(353).randomBytes(e)}catch(t){}try{var n;return(self.crypto||self.msCrypto).getRandomValues(n=new Uint32Array(e)),Array.prototype.slice.call(n)}catch(t){}if(!i)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return i(e)}try{n(1)}catch(t){}function a(t,e){for(var r=0,i=0,n=0,a=t.length;n31&&(t=31);var r=[];return r.push("$2a$"),t<10&&r.push("0"),r.push(t.toString()),r.push("$"),r.push(h(n(l),l)),r.join("")},e.genSalt=function(t,r,i){if("function"==typeof r&&(i=r,r=void 0),"function"==typeof t&&(i=t,t=void 0),void 0===t)t=p;else if("number"!=typeof t)throw Error("illegal arguments: "+typeof t);function n(r){s((function(){try{r(null,e.genSaltSync(t))}catch(t){r(t)}}))}if(!i)return new Promise((function(t,e){n((function(r,i){r?e(r):t(i)}))}));if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);n(i)},e.hashSync=function(t,r){if(void 0===r&&(r=p),"number"==typeof r&&(r=e.genSaltSync(r)),"string"!=typeof t||"string"!=typeof r)throw Error("Illegal arguments: "+typeof t+", "+typeof r);return S(t,r)},e.hash=function(t,r,i,n){function a(i){"string"==typeof t&&"number"==typeof r?e.genSalt(r,(function(e,r){S(t,r,i,n)})):"string"==typeof t&&"string"==typeof r?S(t,r,i,n):s(i.bind(this,Error("Illegal arguments: "+typeof t+", "+typeof r)))}if(!i)return new Promise((function(t,e){a((function(r,i){r?e(r):t(i)}))}));if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);a(i)},e.compareSync=function(t,r){if("string"!=typeof t||"string"!=typeof r)throw Error("Illegal arguments: "+typeof t+", "+typeof r);return 60===r.length&&a(e.hashSync(t,r.substr(0,r.length-31)),r)},e.compare=function(t,r,i,n){function o(i){"string"==typeof t&&"string"==typeof r?60===r.length?e.hash(t,r.substr(0,29),(function(t,e){t?i(t):i(null,a(e,r))}),n):s(i.bind(this,null,!1)):s(i.bind(this,Error("Illegal arguments: "+typeof t+", "+typeof r)))}if(!i)return new Promise((function(t,e){o((function(r,i){r?e(r):t(i)}))}));if("function"!=typeof i)throw Error("Illegal callback: "+typeof i);o(i)},e.getRounds=function(t){if("string"!=typeof t)throw Error("Illegal arguments: "+typeof t);return parseInt(t.split("$")[2],10)},e.getSalt=function(t){if("string"!=typeof t)throw Error("Illegal arguments: "+typeof t);if(60!==t.length)throw Error("Illegal hash length: "+t.length+" != 60");return t.substring(0,29)};var s="undefined"!=typeof process&&process&&"function"==typeof process.nextTick?"function"==typeof setImmediate?setImmediate:process.nextTick:setTimeout,o="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),c=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-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,-1,-1,-1,-1,-1,-1,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,-1,-1,-1,-1,-1],f=String.fromCharCode;function h(t,e){var r,i,n=0,a=[];if(e<=0||e>t.length)throw Error("Illegal len: "+e);for(;n>2&63]),r=(3&r)<<4,n>=e){a.push(o[63&r]);break}if(r|=(i=255&t[n++])>>4&15,a.push(o[63&r]),r=(15&i)<<2,n>=e){a.push(o[63&r]);break}r|=(i=255&t[n++])>>6&3,a.push(o[63&r]),a.push(o[63&i])}return a.join("")}function u(t,e){var r,i,n,a,s,o=0,h=t.length,u=0,d=[];if(e<=0)throw Error("Illegal len: "+e);for(;o>>0,a|=(48&i)>>4,d.push(f(a)),!(++u>=e||o>=h))&&-1!=(n=(s=t.charCodeAt(o++))>>0,a|=(60&n)>>2,d.push(f(a)),!(++u>=e||o>=h));)a=(3&n)<<6>>>0,a|=(s=t.charCodeAt(o++))>6&31|192),e(63&r|128)):r<65536?(e(r>>12&15|224),e(r>>6&63|128),e(63&r|128)):(e(r>>18&7|240),e(r>>12&63|128),e(r>>6&63|128),e(63&r|128)),r=null},decodeUTF8:function(t,e){for(var r,i,n,a,s=function(t){t=t.slice(0,t.indexOf(null));var e=Error(t.toString());throw e.name="TruncatedError",e.bytes=t,e};null!==(r=t());)if(0==(128&r))e(r);else if(192==(224&r))null===(i=t())&&s([r,i]),e((31&r)<<6|63&i);else if(224==(240&r))(null===(i=t())||null===(n=t()))&&s([r,i,n]),e((15&r)<<12|(63&i)<<6|63&n);else{if(240!=(248&r))throw RangeError("Illegal starting byte: "+r);(null===(i=t())||null===(n=t())||null===(a=t()))&&s([r,i,n,a]),e((7&r)<<18|(63&i)<<12|(63&n)<<6|63&a)}},UTF16toUTF8:function(t,e){for(var r,i=null;null!==(r=null!==i?i:t());)r>=55296&&r<=57343&&null!==(i=t())&&i>=56320&&i<=57343?(e(1024*(r-55296)+i-56320+65536),i=null):e(r);null!==i&&e(i)},UTF8toUTF16:function(t,e){var r=null;for("number"==typeof t&&(r=t,t=function(){return null});null!==r||null!==(r=t());)r<=65535?e(r):(e(55296+((r-=65536)>>10)),e(r%1024+56320)),r=null},encodeUTF16toUTF8:function(e,r){t.UTF16toUTF8(e,(function(e){t.encodeUTF8(e,r)}))},decodeUTF8toUTF16:function(e,r){t.decodeUTF8(e,(function(e){t.UTF8toUTF16(e,r)}))},calculateCodePoint:function(t){return t<128?1:t<2048?2:t<65536?3:4},calculateUTF8:function(e){for(var r,i=0;null!==(r=e());)i+=t.calculateCodePoint(r);return i},calculateUTF16asUTF8:function(e){var r=0,i=0;return t.UTF16toUTF8(e,(function(e){++r,i+=t.calculateCodePoint(e)})),[r,i]}};return t}();Date.now=Date.now||function(){return+new Date};var l=16,p=10,b=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],g=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],m=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function v(t,e,r,i){var n,a=t[e],s=t[e+1];return n=i[(a^=r[0])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[1])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[2])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[3])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[4])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[5])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[6])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[7])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[8])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[9])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[10])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[11])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[12])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[13])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],n=i[(a^=(n+=i[768|255&s])^r[14])>>>24],n+=i[256|a>>16&255],n^=i[512|a>>8&255],n=i[(s^=(n+=i[768|255&a])^r[15])>>>24],n+=i[256|s>>16&255],n^=i[512|s>>8&255],a^=(n+=i[768|255&s])^r[16],t[e]=s^r[17],t[e+1]=a,t}function y(t,e){for(var r=0,i=0;r<4;++r)i=i<<8|255&t[e],e=(e+1)%t.length;return{key:i,offp:e}}function _(t,e,r){for(var i,n=0,a=[0,0],s=e.length,o=r.length,c=0;c31){if(a=Error("Illegal number of rounds (4-31): "+r),i)return void s(i.bind(this,a));throw a}if(e.length!==l){if(a=Error("Illegal salt length: "+e.length+" != "+l),i)return void s(i.bind(this,a));throw a}r=1<>>0;var f,h,u,d=0;function p(){if(n&&n(d/r),!(d>1;u++)v(o,u<<1,f,h);var a=[];for(d=0;d>24&255)>>>0),a.push((o[d]>>16&255)>>>0),a.push((o[d]>>8&255)>>>0),a.push((255&o[d])>>>0);return i?void i(null,a):a}for(var l=Date.now();d100)););i&&s(p)}if(Int32Array?(f=new Int32Array(b),h=new Int32Array(g)):(f=b.slice(),h=g.slice()),function(t,e,r,i){for(var n,a=0,s=[0,0],o=r.length,c=i.length,f=0;f"$"){if(n=Error("Missing salt rounds"),r)return void s(r.bind(this,n));throw n}var c,f,p,b=10*parseInt(e.substring(o,o+1),10)+parseInt(e.substring(o+1,o+2),10),g=e.substring(o+3,o+25),v=(c=t+=a>="a"?"\0":"",f=[],p=0,d.encodeUTF16toUTF8((function(){return p>=c.length?null:c.charCodeAt(p++)}),(function(t){f.push(t)})),f),y=u(g,l);function _(t){var e=[];return e.push("$2"),a>="a"&&e.push(a),e.push("$"),b<10&&e.push("0"),e.push(b.toString()),e.push("$"),e.push(h(y,y.length)),e.push(h(t,4*m.length-1)),e.join("")}if(void 0===r)return _(w(v,y,b));w(v,y,b,(function(t,e){t?r(t,null):r(null,_(e))}),i)}return e.encodeBase64=h,e.decodeBase64=u,e})?i.apply(e,n):i)||(t.exports=a)}).call(this,r(26)(t))},function(t,e,r){"use strict";var i=r(184),n=r(246),a=r(183).Buffer,s=new Array(16);function o(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function c(t,e){return t<>>32-e}function f(t,e,r,i,n,a,s){return c(t+(e&r|~e&i)+n+a|0,s)+e|0}function h(t,e,r,i,n,a,s){return c(t+(e&i|r&~i)+n+a|0,s)+e|0}function u(t,e,r,i,n,a,s){return c(t+(e^r^i)+n+a|0,s)+e|0}function d(t,e,r,i,n,a,s){return c(t+(r^(e|~i))+n+a|0,s)+e|0}i(o,n),o.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var r=this._a,i=this._b,n=this._c,a=this._d;r=f(r,i,n,a,t[0],3614090360,7),a=f(a,r,i,n,t[1],3905402710,12),n=f(n,a,r,i,t[2],606105819,17),i=f(i,n,a,r,t[3],3250441966,22),r=f(r,i,n,a,t[4],4118548399,7),a=f(a,r,i,n,t[5],1200080426,12),n=f(n,a,r,i,t[6],2821735955,17),i=f(i,n,a,r,t[7],4249261313,22),r=f(r,i,n,a,t[8],1770035416,7),a=f(a,r,i,n,t[9],2336552879,12),n=f(n,a,r,i,t[10],4294925233,17),i=f(i,n,a,r,t[11],2304563134,22),r=f(r,i,n,a,t[12],1804603682,7),a=f(a,r,i,n,t[13],4254626195,12),n=f(n,a,r,i,t[14],2792965006,17),r=h(r,i=f(i,n,a,r,t[15],1236535329,22),n,a,t[1],4129170786,5),a=h(a,r,i,n,t[6],3225465664,9),n=h(n,a,r,i,t[11],643717713,14),i=h(i,n,a,r,t[0],3921069994,20),r=h(r,i,n,a,t[5],3593408605,5),a=h(a,r,i,n,t[10],38016083,9),n=h(n,a,r,i,t[15],3634488961,14),i=h(i,n,a,r,t[4],3889429448,20),r=h(r,i,n,a,t[9],568446438,5),a=h(a,r,i,n,t[14],3275163606,9),n=h(n,a,r,i,t[3],4107603335,14),i=h(i,n,a,r,t[8],1163531501,20),r=h(r,i,n,a,t[13],2850285829,5),a=h(a,r,i,n,t[2],4243563512,9),n=h(n,a,r,i,t[7],1735328473,14),r=u(r,i=h(i,n,a,r,t[12],2368359562,20),n,a,t[5],4294588738,4),a=u(a,r,i,n,t[8],2272392833,11),n=u(n,a,r,i,t[11],1839030562,16),i=u(i,n,a,r,t[14],4259657740,23),r=u(r,i,n,a,t[1],2763975236,4),a=u(a,r,i,n,t[4],1272893353,11),n=u(n,a,r,i,t[7],4139469664,16),i=u(i,n,a,r,t[10],3200236656,23),r=u(r,i,n,a,t[13],681279174,4),a=u(a,r,i,n,t[0],3936430074,11),n=u(n,a,r,i,t[3],3572445317,16),i=u(i,n,a,r,t[6],76029189,23),r=u(r,i,n,a,t[9],3654602809,4),a=u(a,r,i,n,t[12],3873151461,11),n=u(n,a,r,i,t[15],530742520,16),r=d(r,i=u(i,n,a,r,t[2],3299628645,23),n,a,t[0],4096336452,6),a=d(a,r,i,n,t[7],1126891415,10),n=d(n,a,r,i,t[14],2878612391,15),i=d(i,n,a,r,t[5],4237533241,21),r=d(r,i,n,a,t[12],1700485571,6),a=d(a,r,i,n,t[3],2399980690,10),n=d(n,a,r,i,t[10],4293915773,15),i=d(i,n,a,r,t[1],2240044497,21),r=d(r,i,n,a,t[8],1873313359,6),a=d(a,r,i,n,t[15],4264355552,10),n=d(n,a,r,i,t[6],2734768916,15),i=d(i,n,a,r,t[13],1309151649,21),r=d(r,i,n,a,t[4],4149444226,6),a=d(a,r,i,n,t[11],3174756917,10),n=d(n,a,r,i,t[2],718787259,15),i=d(i,n,a,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0},o.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=a.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=o},function(t,e,r){"use strict";var i,n="object"==typeof Reflect?Reflect:null,a=n&&"function"==typeof n.apply?n.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};i=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var s=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,a),i(r)}function a(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}m(t,e,a,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&m(t,"error",e,r)}(t,n,{once:!0})}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var c=10;function f(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,a,s,o;if(f(r),void 0===(a=t._events)?(a=t._events=Object.create(null),t._eventsCount=0):(void 0!==a.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),a=t._events),s=a[e]),void 0===s)s=a[e]=r,++t._eventsCount;else if("function"==typeof s?s=a[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=s.length,o=c,console&&console.warn&&console.warn(o)}return t}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=d.bind(i);return n.listener=r,i.wrapFn=n,n}function p(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var o=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw o.context=s,o}var c=n[t];if(void 0===c)return!1;if("function"==typeof c)a(c,this,e);else{var f=c.length,h=g(c,f);for(r=0;r=0;a--)if(r[a]===e||r[a].listener===e){s=r[a].listener,n=a;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return p(this,t,!0)},o.prototype.rawListeners=function(t){return p(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):b.call(t,e)},o.prototype.listenerCount=b,o.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},,,function(t,e,r){"use strict";var i=r(208);function n(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;t.entry=null;for(;i;){var n=i.callback;e.pendingcb--,n(r),i=i.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=g;var a,s=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:i.nextTick;g.WritableState=b;var o=Object.create(r(202));o.inherits=r(184);var c={deprecate:r(357)},f=r(248),h=r(183).Buffer,u=global.Uint8Array||function(){};var d,l=r(249);function p(){}function b(t,e){a=a||r(195),t=t||{};var o=e instanceof a;this.objectMode=!!t.objectMode,o&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var c=t.highWaterMark,f=t.writableHighWaterMark,h=this.objectMode?16:16384;this.highWaterMark=c||0===c?c:o&&(f||0===f)?f:h,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===t.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,a=r.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,a){--e.pendingcb,r?(i.nextTick(a,n),i.nextTick(S,t,e),t._writableState.errorEmitted=!0,t.emit("error",n)):(a(n),t._writableState.errorEmitted=!0,t.emit("error",n),S(t,e))}(t,r,n,e,a);else{var o=_(r);o||r.corked||r.bufferProcessing||!r.bufferedRequest||y(t,r),n?s(v,t,r,o,a):v(t,r,o,a)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new n(this)}function g(t){if(a=a||r(195),!(d.call(g,this)||this instanceof a))return new g(t);this._writableState=new b(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),f.call(this)}function m(t,e,r,i,n,a,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,r?t._writev(n,e.onwrite):t._write(n,a,e.onwrite),e.sync=!1}function v(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),S(t,e)}function y(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,a=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var o=0,c=!0;r;)a[o]=r,r.isBuf||(c=!1),r=r.next,o+=1;a.allBuffers=c,m(t,e,!0,e.length,a,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new n(e),e.bufferedRequestCount=0}else{for(;r;){var f=r.chunk,h=r.encoding,u=r.callback;if(m(t,e,!1,e.objectMode?1:f.length,f,h,u),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function _(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function w(t,e){t._final((function(r){e.pendingcb--,r&&t.emit("error",r),e.prefinished=!0,t.emit("prefinish"),S(t,e)}))}function S(t,e){var r=_(e);return r&&(!function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,i.nextTick(w,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),r}o.inherits(g,f),b.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(b.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(d=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(t){return!!d.call(this,t)||this===g&&(t&&t._writableState instanceof b)}})):d=function(t){return t instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(t,e,r){var n,a=this._writableState,s=!1,o=!a.objectMode&&(n=t,h.isBuffer(n)||n instanceof u);return o&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(r=e,e=null),o?e="buffer":e||(e=a.defaultEncoding),"function"!=typeof r&&(r=p),a.ended?function(t,e){var r=new Error("write after end");t.emit("error",r),i.nextTick(e,r)}(this,r):(o||function(t,e,r,n){var a=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),i.nextTick(n,s),a=!1),a}(this,a,t,r))&&(a.pendingcb++,s=function(t,e,r,i,n,a){if(!r){var s=function(t,e,r){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,r));return e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var o=e.objectMode?1:i.length;e.length+=o;var c=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(t,e,r){e.ending=!0,S(t,e),r&&(e.finished?i.nextTick(r):t.once("finish",r));e.ended=!0,t.writable=!1}(this,n,r)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),g.prototype.destroy=l.destroy,g.prototype._undestroy=l.undestroy,g.prototype._destroy=function(t,e){this.end(),e(t)}},function(t,e,r){"use strict";var i=r(183).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=c,this.end=f,e=4;break;case"utf8":this.fillLast=o,e=4;break;case"base64":this.text=h,this.end=u,e=3;break;default:return this.write=d,void(this.end=l)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function o(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function c(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function f(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function h(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function u(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(t){return t.toString(this.encoding)}function l(t){return t&&t.length?this.write(t):""}e.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return n>0&&(t.lastNeed=n-1),n;if(--i=0)return n>0&&(t.lastNeed=n-2),n;if(--i=0)return n>0&&(2===n?n=0:t.lastNeed=n-3),n;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,r){"use strict";var i=r(190).Buffer,n=r(184),a=r(246),s=new Array(16),o=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],c=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],f=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],h=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],u=[0,1518500249,1859775393,2400959708,2840853838],d=[1352829926,1548603684,1836072691,2053994217,0];function l(){a.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(t,e){return t<>>32-e}function b(t,e,r,i,n,a,s,o){return p(t+(e^r^i)+a+s|0,o)+n|0}function g(t,e,r,i,n,a,s,o){return p(t+(e&r|~e&i)+a+s|0,o)+n|0}function m(t,e,r,i,n,a,s,o){return p(t+((e|~r)^i)+a+s|0,o)+n|0}function v(t,e,r,i,n,a,s,o){return p(t+(e&i|r&~i)+a+s|0,o)+n|0}function y(t,e,r,i,n,a,s,o){return p(t+(e^(r|~i))+a+s|0,o)+n|0}n(l,a),l.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,l=0|this._e,_=0|this._a,w=0|this._b,S=0|this._c,M=0|this._d,k=0|this._e,x=0;x<80;x+=1){var E,A;x<16?(E=b(r,i,n,a,l,t[o[x]],u[0],f[x]),A=y(_,w,S,M,k,t[c[x]],d[0],h[x])):x<32?(E=g(r,i,n,a,l,t[o[x]],u[1],f[x]),A=v(_,w,S,M,k,t[c[x]],d[1],h[x])):x<48?(E=m(r,i,n,a,l,t[o[x]],u[2],f[x]),A=m(_,w,S,M,k,t[c[x]],d[2],h[x])):x<64?(E=v(r,i,n,a,l,t[o[x]],u[3],f[x]),A=g(_,w,S,M,k,t[c[x]],d[3],h[x])):(E=y(r,i,n,a,l,t[o[x]],u[4],f[x]),A=b(_,w,S,M,k,t[c[x]],d[4],h[x])),r=l,l=a,a=p(n,10),n=i,i=E,_=k,k=M,M=p(S,10),S=w,w=A}var C=this._b+n+M|0;this._b=this._c+a+k|0,this._c=this._d+l+_|0,this._d=this._e+r+w|0,this._e=this._a+i+S|0,this._a=C},l.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=l},function(t,e,r){(e=t.exports=function(t){t=t.toLowerCase();var r=e[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r}).sha=r(359),e.sha1=r(360),e.sha224=r(361),e.sha256=r(251),e.sha384=r(362),e.sha512=r(252)},function(t,e,r){"use strict";var i=r(187);function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,e){for(var r=Math.min(this.buffer.length-this.bufferOff,t.length-e),i=0;i0;i--)e+=this._buffer(t,e),r+=this._flushBuffer(n,r);return e+=this._buffer(t,e),n},n.prototype.final=function(t){var e,r;return t&&(e=this.update(t)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e=0||!e.umod(t.prime1)||!e.umod(t.prime2));return e}function s(t,r){var n=function(t){var e=a(t);return{blinder:e.toRed(i.mont(t.modulus)).redPow(new i(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(r),s=r.modulus.byteLength(),o=new i(t).mul(n.blinder).umod(r.modulus),c=o.toRed(i.mont(r.prime1)),f=o.toRed(i.mont(r.prime2)),h=r.coefficient,u=r.prime1,d=r.prime2,l=c.redPow(r.exponent1).fromRed(),p=f.redPow(r.exponent2).fromRed(),b=l.isub(p).imul(h).umod(u).imul(d);return p.iadd(b).imul(n.unblinder).umod(r.modulus).toArrayLike(e,"be",s)}s.getr=a,t.exports=s}).call(this,r(190).Buffer)},function(t,e,r){"use strict";var i=e;i.version=r(391).version,i.utils=r(188),i.rand=r(227),i.curve=r(271),i.curves=r(231),i.ec=r(402),i.eddsa=r(406)},function(t,e,r){"use strict";var i,n=e,a=r(232),s=r(271),o=r(188).assert;function c(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,o(this.g.validate(),"Invalid curve"),o(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function f(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new c(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=c,f("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),f("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),f("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),f("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),f("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),f("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),f("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(401)}catch(t){i=void 0}f("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},function(t,e,r){var i=e;i.utils=r(191),i.common=r(204),i.sha=r(395),i.ripemd=r(399),i.hmac=r(400),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},function(t,e,r){"use strict";var i,n=r(190),a=n.Buffer,s={};for(i in n)n.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(s[i]=n[i]);var o=s.Buffer={};for(i in a)a.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(o[i]=a[i]);if(s.Buffer.prototype=a.prototype,o.from&&o.from!==Uint8Array.from||(o.from=function(t,e,r){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return a(t,e,r)}),o.alloc||(o.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=a(t);return e&&0!==e.length?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i}),!s.kStringMaxLength)try{s.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch(t){}s.constants||(s.constants={MAX_LENGTH:s.kMaxLength},s.kStringMaxLength&&(s.constants.MAX_STRING_LENGTH=s.kStringMaxLength)),t.exports=s},function(t,e,r){"use strict";const i=r(235).Reporter,n=r(205).EncoderBuffer,a=r(205).DecoderBuffer,s=r(187),o=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],c=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(o);function f(t,e,r){const i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}t.exports=f;const h=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];f.prototype.clone=function(){const t=this._baseState,e={};h.forEach((function(r){e[r]=t[r]}));const r=new this.constructor(e.parent);return r._baseState=e,r},f.prototype._wrap=function(){const t=this._baseState;c.forEach((function(e){this[e]=function(){const r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}}),this)},f.prototype._init=function(t){const e=this._baseState;s(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),s.equal(e.children.length,1,"Root node can have only one child")},f.prototype._useArgs=function(t){const e=this._baseState,r=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==r.length&&(s(null===e.children),e.children=r,r.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(s(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;const e={};return Object.keys(t).forEach((function(r){r==(0|r)&&(r|=0);const i=t[r];e[i]=r})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){f.prototype[t]=function(){const e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),o.forEach((function(t){f.prototype[t]=function(){const e=this._baseState,r=Array.prototype.slice.call(arguments);return s(null===e.tag),e.tag=t,this._useArgs(r),this}})),f.prototype.use=function(t){s(t);const e=this._baseState;return s(null===e.use),e.use=t,this},f.prototype.optional=function(){return this._baseState.optional=!0,this},f.prototype.def=function(t){const e=this._baseState;return s(null===e.default),e.default=t,e.optional=!0,this},f.prototype.explicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.explicit=t,this},f.prototype.implicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.implicit=t,this},f.prototype.obj=function(){const t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},f.prototype.key=function(t){const e=this._baseState;return s(null===e.key),e.key=t,this},f.prototype.any=function(){return this._baseState.any=!0,this},f.prototype.choice=function(t){const e=this._baseState;return s(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},f.prototype.contains=function(t){const e=this._baseState;return s(null===e.use),e.contains=t,this},f.prototype._decode=function(t,e){const r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));let i,n=r.default,s=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(s=this._peekTag(t,i,r.any),t.isError(s))return s}else{const i=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),s=!0}catch(t){s=!1}t.restore(i)}}if(r.obj&&s&&(i=t.enterObject()),s){if(null!==r.explicit){const e=this._decodeTag(t,r.explicit);if(t.isError(e))return e;t=e}const i=t.offset;if(null===r.use&&null===r.choice){let e;r.any&&(e=t.save());const i=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(i))return i;r.any?n=t.raw(e):t=i}if(e&&e.track&&null!==r.tag&&e.track(t.path(),i,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e)),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(t,e)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(i,e)}}return r.obj&&s&&(n=t.leaveObject(i)),null===r.key||null===n&&!0!==s?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},f.prototype._decodeGeneric=function(t,e,r){const i=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,i.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&i.args?this._decodeObjid(e,i.args[0],i.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"objDesc"===t?this._decodeStr(e,t,r):"int"===t||"enum"===t?this._decodeInt(e,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},f.prototype._getUse=function(t,e){const r=this._baseState;return r.useDecoder=this._use(t,e),s(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},f.prototype._decodeChoice=function(t,e){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(a){const s=t.save(),o=r.choice[a];try{const r=o._decode(t,e);if(t.isError(r))return!1;i={type:a,value:r},n=!0}catch(e){return t.restore(s),!1}return!0}),this),n?i:t.error("Choice not matched")},f.prototype._createEncoderBuffer=function(t){return new n(t,this.reporter)},f.prototype._encode=function(t,e,r){const i=this._baseState;if(null!==i.default&&i.default===t)return;const n=this._encodeValue(t,e,r);return void 0===n||this._skipDefault(n,e,r)?void 0:n},f.prototype._encodeValue=function(t,e,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);let a=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}let s=null,o=!1;if(n.any)a=this._createEncoderBuffer(t);else if(n.choice)a=this._encodeChoice(t,e);else if(n.contains)s=this._getUse(n.contains,r)._encode(t,e),o=!0;else if(n.children)s=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");const i=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");const n=r._encode(t[r._baseState.key],e,t);return e.leaveKey(i),n}),this).filter((function(t){return t})),s=this._createEncoderBuffer(s);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,s=this._createEncoderBuffer(t.map((function(r){const i=this._baseState;return this._getUse(i.args[0],t)._encode(r,e)}),r))}else null!==n.use?a=this._getUse(n.use,r)._encode(t,e):(s=this._encodePrimitive(n.tag,t),o=!0);if(!n.any&&null===n.choice){const t=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===t?null===n.use&&e.error("Tag could be omitted only for .use()"):null===n.use&&(a=this._encodeComposite(t,o,r,s))}return null!==n.explicit&&(a=this._encodeComposite(n.explicit,!1,"context",a)),a},f.prototype._encodeChoice=function(t,e){const r=this._baseState,i=r.choice[t.type];return i||s(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(t.value,e)},f.prototype._encodePrimitive=function(t,e){const r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},f.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},f.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},function(t,e,r){"use strict";const i=r(184);function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function a(t,e){this.path=t,this.rethrow(e)}e.Reporter=n,n.prototype.isError=function(t){return t instanceof a},n.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){const e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){const e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){const i=this._reporterState;this.exitKey(t),null!==i.obj&&(i.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){const e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){let e;const r=this._reporterState,i=t instanceof a;if(e=i?t:new a(r.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!r.options.partial)throw e;return i||r.errors.push(e),e},n.prototype.wrapResult=function(t){const e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},i(a,Error),a.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,a),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){"use strict";function i(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=i(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=i(e.tag)},function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));const i=r(0).a.extend({computed:{encryptOptions(){return this.$themeConfig.encrypt||{}}}})},function(t,e,r){"use strict";r.d(e,"a",(function(){return a}));var i=r(0),n=r(206);const a=i.a.extend({computed:{$timelineItems(){const{pages:t}=this.$site;return Object(n.c)(Object(n.a)(t,t=>Boolean(t.frontmatter.time||t.frontmatter.date||t.createTimeStamp)&&!1!==t.frontmatter.timeline))},$timeline(){const t=[];return this.$timelineItems.forEach(e=>{const{frontmatter:{date:r,time:i=r},createTimeStamp:a}=e,[s,o,c]=Object(n.b)(i||a);s&&o&&c&&(t[0]&&t[0].year===s||t.unshift({year:s,articles:[]}),e.frontmatter.parsedDate=`${o}/${c}`,t[0].articles.push(e))}),t.reverse()}}})},,function(t,e,r){"use strict";var i=r(243),n=r(244),a=r(0),s=r(16),o=r(199),c=a.a.extend({name:"DropdownLink",components:{NavLink:o.a},props:{item:{type:Object,required:!0}},data:()=>({open:!1}),computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text},iconPrefix(){const{iconPrefix:t}=this.$themeConfig;return""===t?"":t||"icon-"}},watch:{$route(){this.open=!1}},methods:{setOpen(t){this.open=t},handleDropdown(t){0===t.detail&&this.setOpen(!this.open)},isLastItemOfArray:(t,e)=>!!Array.isArray(e)&&t===e[e.length-1]}}),f=(r(425),r(1)),h=Object(f.a)(c,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[r("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:t.handleDropdown}},[t._t("title",[r("span",{staticClass:"title"},[t.item.icon?r("i",{class:"iconfont "+t.iconPrefix+t.item.icon}):t._e(),t._v("\n "+t._s(t.item.text)+"\n ")])]),t._v(" "),r("span",{staticClass:"arrow"})],2),t._v(" "),r("ul",{staticClass:"nav-dropdown"},t._l(t.item.items,(function(e,i){return r("li",{key:e.link||i,staticClass:"dropdown-item"},["links"===e.type?[r("h4",{staticClass:"dropdown-subtitle"},[e.link?r("NavLink",{attrs:{item:e},on:{focusout:function(r){t.isLastItemOfArray(e,t.item.children)&&0===e.children.length&&t.setOpen(!1)}}}):r("span",[t._v(t._s(e.text))])],1),t._v(" "),r("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(e.items,(function(i){return r("li",{key:i.link,staticClass:"dropdown-subitem"},[r("NavLink",{attrs:{item:i},on:{focusout:function(r){t.isLastItemOfArray(i,e.items)&&t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0)]:r("NavLink",{attrs:{item:e},on:{focusout:function(r){t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],2)})),0)])}),[],!1,null,null,null).exports,u=Object(f.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon i18n-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M639.981 344.075c14.805 44.45 34.542 79.023 69.084 113.596 29.603-29.634 49.34-69.146 64.145-113.596H639.981zM314.33 591.024h128.29l-64.145-172.865-64.145 172.865z",fill:"currentColor"}}),this._v(" "),e("path",{attrs:{d:"M807.746 116.882H215.643c-54.274 0-98.681 44.45-98.681 98.78v592.677c0 54.329 44.407 98.78 98.68 98.78h592.104c54.273 0 98.681-44.451 98.681-98.78V215.66c0-54.329-39.475-98.78-98.68-98.78zM565.971 754.01c-9.866 9.878-19.738 9.878-29.603 9.878-4.94 0-14.805 0-19.738-4.939-4.939-4.939-9.872 0-9.872-4.939s-4.932-9.878-9.865-19.756c-4.94-9.878-4.94-14.817-9.872-24.695L467.29 655.23H294.592l-19.737 54.33c-9.866 19.755-14.805 34.572-19.738 44.45-4.939 9.878-14.804 9.878-29.603 9.878-9.871 0-19.737-4.939-29.609-9.878-9.865-9.878-14.798-14.817-14.798-24.695 0-4.939 0-9.878 4.933-19.756 4.939-9.878 4.939-14.817 9.865-24.695l108.553-276.583c4.939-9.878 4.939-19.756 9.872-29.633 4.932-9.878 9.865-19.756 14.798-24.695 4.939-4.94 9.872-14.817 19.737-19.756 9.872-4.94 19.738-4.94 29.61-4.94 9.865 0 19.73 0 29.603 4.94 9.865 4.939 14.804 9.878 19.737 19.756 4.933 4.939 9.866 14.817 14.798 24.695 4.94 9.877 9.872 19.755 14.805 34.572l108.553 271.644c9.865 19.756 14.804 34.573 14.804 44.451-4.939 4.94-9.872 14.817-14.804 24.695zm271.378-192.62c-54.273-19.756-93.748-44.451-128.29-74.085-34.536 34.573-78.943 59.268-133.223 74.085l-14.798-24.695c54.273-14.817 98.68-34.573 133.223-69.146-34.542-34.573-64.145-79.024-74.017-128.413h-49.34V319.38h133.228c-9.877-14.817-19.743-34.573-29.609-49.39l14.799-4.94c9.871 14.818 24.676 34.574 34.542 54.33h123.35v24.695h-49.34c-14.798 49.39-39.468 93.84-69.077 123.474 34.541 29.634 74.01 54.329 128.29 69.146l-19.738 24.695z",fill:"currentColor"}})])}),[],!1,null,null,null).exports;const d=(t,e="")=>{var r;const i=e+(t.prefix||""),n=Object.assign({},t);return i&&(void 0!==n.link&&(n.link=i+n.link),delete n.prefix),(null===(r=n.items)||void 0===r?void 0:r.length)?Object.assign(n,{type:"links",items:n.items.map(t=>d(t,i))}):n.type="link",n};var l=a.a.extend({name:"LanguageDropdown",components:{NavLink:o.a,DropdownLink:h},computed:{dropdown(){const{locales:t}=this.$site;if(t&&Object.keys(t).length>1){const e=this.$page.path,{routes:r}=this.$router.options,i=this.$themeConfig.locales||{},n={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(t).map(n=>{const a=t[n],s=i[n]&&i[n].label||a.lang||"Unknown Language";let o;return a.lang===this.$lang?o=e:(o=e.replace(this.$localeConfig.path,n),(r||[]).some(t=>t.path===o)||(o=n)),{text:s,link:o}})};return d(n)}return!1}},render(t){return this.dropdown?t("div",{class:"nav-links"},[t("div",{class:"nav-item"},[t(h,{props:{item:this.dropdown}},[t(u,{slot:"title",style:{width:"1rem",height:"1rem",verticalAlign:"middle",marginLeft:"1rem"}})])])]):null}}),p=a.a.extend({name:"NavLinks",components:{DropdownLink:h,NavLink:o.a},computed:{navLinks(){return(this.$themeLocaleConfig.nav||this.$themeConfig.nav||[]).map(t=>d(t))}}}),b=(r(426),Object(f.a)(p,(function(){var t=this.$createElement,e=this._self._c||t;return e("nav",{staticClass:"nav-links"},this._l(this.navLinks,(function(t){return e("div",{key:t.link,staticClass:"nav-item"},["links"===t.type?e("DropdownLink",{attrs:{item:t}}):e("NavLink",{attrs:{item:t}})],1)})),0)}),[],!1,null,null,null).exports),g=a.a.extend({name:"RepoLink",computed:{repoLink(){const{repo:t}=this.$themeConfig;return t?/^https?:/u.test(t)?t:"https://github.com/"+t:""},repoLabel(){if(!this.repoLink)return"";if(this.$themeConfig.repoLabel)return this.$themeConfig.repoLabel;const[t]=/^https?:\/\/[^/]+/u.exec(this.repoLink)||[""],e=["GitHub","GitLab","Bitbucket"];for(let r=0;r{let i=y()(e,"title","");return y()(e,"frontmatter.tags")&&(i+=" "+e.frontmatter.tags.join(" ")),r&&(i+=" "+r),w(t,i)};const w=(t,e)=>{const r=t=>t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),i=new RegExp("[^\0-]"),n=t.split(/\s+/g).map(t=>t.trim()).filter(t=>!!t);if(i.test(t))return n.some(t=>e.toLowerCase().indexOf(t)>-1);{const i=t.endsWith(" ");return new RegExp(n.map((t,e)=>n.length!==e+1||i?`(?=.*\\b${r(t)}\\b)`:`(?=.*\\b${r(t)})`).join("")+".+","gi").test(e)}};var S={name:"SearchBox",data:()=>({query:"",focused:!1,focusIndex:0,placeholder:void 0}),computed:{showSuggestions(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions(){const t=this.query.trim().toLowerCase();if(!t)return;const{pages:e}=this.$site,r=this.$site.themeConfig.searchMaxSuggestions||10,i=this.$localePath,n=[];for(let a=0;a=r);a++){const s=e[a];if(this.getPageLocalePath(s)===i&&this.isSearchable(s))if(_(t,s))n.push(s);else if(s.headers)for(let e=0;e=r);e++){const r=s.headers[e];r.title&&_(t,s,r.title)&&n.push(Object.assign({},s,{path:s.path+"#"+r.slug,header:r}))}}return n},alignRight(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},mounted(){this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey)},beforeDestroy(){document.removeEventListener("keydown",this.onHotkey)},methods:{getPageLocalePath(t){for(const e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable(t){let e=null;return null===e||(e=Array.isArray(e)?e:new Array(e),e.filter(e=>t.path.match(e)).length>0)},onHotkey(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown(){this.showSuggestions&&(this.focusIndex "+t._s(e.header.title))]):t._e()])])})),0):t._e()])}),[],!1,null,null,null).exports),k=(r(429),Object(f.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("button",{staticClass:"sidebar-button",attrs:{title:"Sidebar Button"},on:{click:function(e){return t.$emit("toggle-sidebar")}}},[r("span",{staticClass:"icon"})])}),[],!1,null,null,null).exports),x=r(335);let E;const A=(t,e)=>t.ownerDocument.defaultView.getComputedStyle(t,null)[e];var C=a.a.extend({name:"Navbar",components:{AlgoliaSearchBox:s.a,LanguageDropdown:l,NavLinks:b,RepoLink:m,SearchBox:M,SidebarButton:k,ThemeColor:x.a},data:()=>({linksWrapMaxWidth:0,isMobile:!1}),computed:{siteBrandTitle(){return this.$site.title},canHideSiteBrandTitle(){return Boolean(this.siteBrandTitle)&&!1!==this.$themeConfig.hideSiteTitleonMobile},siteBrandLogo(){const{logo:t}=this.$themeConfig;return t?this.$withBase(t):""},siteBrandDarkLogo(){const{darkLogo:t}=this.$themeConfig;return t?this.$withBase(t):""},algoliaConfig(){return this.$themeLocaleConfig.algolia||this.$themeConfig.algolia||!1},isAlgoliaSearch(){return Boolean(this.algoliaConfig&&this.algoliaConfig.apiKey&&this.algoliaConfig.indexName)},canHide(){const t=this.$themeConfig.navAutoHide;return"none"!==t&&("always"===t||this.isMobile)}},mounted(){const t=parseInt(A(this.$el,"paddingLeft"))+parseInt(A(this.$el,"paddingRight"));E=()=>{document.documentElement.clientWidth<719?(this.isMobile=!0,this.linksWrapMaxWidth=0):(this.isMobile=!1,this.linksWrapMaxWidth=this.$el.offsetWidth-t-(this.$refs.siteInfo&&this.$refs.siteInfo.$el&&this.$refs.siteInfo.$el.offsetWidth||0))},E(),window.addEventListener("resize",E),window.addEventListener("orientationchange",E)},beforeDestroy(){window.removeEventListener("resize",E),window.removeEventListener("orientationchange",E)}}),I=(r(433),Object(f.a)(C,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("header",{staticClass:"navbar",class:{"can-hide":t.canHide}},[t._t("start"),t._v(" "),r("SidebarButton",{on:{"toggle-sidebar":function(e){return t.$emit("toggle-sidebar")}}}),t._v(" "),r("RouterLink",{ref:"siteInfo",staticClass:"home-link",attrs:{to:t.$localePath}},[t.siteBrandLogo?r("img",{staticClass:"logo",class:{light:Boolean(t.siteBrandDarkLogo)},attrs:{src:t.siteBrandLogo,alt:t.siteBrandTitle}}):t._e(),t._v(" "),t.siteBrandDarkLogo?r("img",{staticClass:"logo dark",attrs:{src:t.siteBrandDarkLogo,alt:t.siteBrandTitle}}):t._e(),t._v(" "),t.siteBrandTitle?r("span",{staticClass:"site-name",class:{"can-hide":t.canHideSiteBrandTitle}},[t._v(t._s(t.siteBrandTitle))]):t._e()]),t._v(" "),t._t("center"),t._v(" "),r("div",{staticClass:"links",style:t.linksWrapMaxWidth?{"max-width":t.linksWrapMaxWidth+"px"}:{}},[r("ThemeColor"),t._v(" "),t.isAlgoliaSearch?r("AlgoliaSearchBox",{attrs:{options:t.algoliaConfig}}):!1!==t.$themeConfig.search&&!1!==t.$page.frontmatter.search?r("SearchBox"):t._e(),t._v(" "),r("NavLinks",{staticClass:"can-hide"}),t._v(" "),r("LanguageDropdown"),t._v(" "),r("RepoLink",{staticClass:"can-hide"}),t._v(" "),t._t("end")],2)],2)}),[],!1,null,null,null).exports),B=r(334),T=a.a.extend({name:"PageFooter",components:{MediaLinks:B.a},computed:{footerConfig(){return this.$themeLocaleConfig.footer||this.$themeConfig.footer||{}},enable(){const{copyrightText:t,footer:e,medialink:r}=this.$page.frontmatter;return!1!==e&&Boolean(t||e||r||this.footerConfig.display)},footerContent(){const{footer:t}=this.$page.frontmatter;return!1!==t&&("string"==typeof t?t:this.footerConfig.content||"")},copyright(){return!1!==this.$frontmatter.copyrightText&&(this.$frontmatter.copyrightText||!1!==this.footerConfig.copyright&&(this.footerConfig.copyright||(this.$themeConfig.author?`Copyright © ${(new Date).getFullYear()} ${this.$themeConfig.author}`:"")))}}}),O=(r(435),Object(f.a)(T,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.enable?r("footer",{staticClass:"footer-wrapper"},[t.$frontmatter.home&&t.$frontmatter.blog?t._e():r("MediaLinks"),t._v(" "),t.footerContent?r("div",{staticClass:"footer",domProps:{innerHTML:t._s(t.footerContent)}}):t._e(),t._v(" "),t.copyright?r("div",{staticClass:"copyright",domProps:{innerHTML:t._s(t.copyright)}}):t._e()],1):t._e()}),[],!1,null,null,null).exports),L=r(242),$=r(207),j=r(341),P=r(344),R=a.a.extend({name:"SidebarDropdownLink",components:{NavLink:o.a,DropdownTransition:P.a},props:{item:{type:Object,required:!0}},data:()=>({open:!1}),computed:{dropdownAriaLabel(){return this.item.ariaLabel||this.item.text},iconPrefix(){const{iconPrefix:t}=this.$themeConfig;return""===t?"":t||"icon-"}},watch:{$route(){this.open=!1}},methods:{setOpen(t){this.open=t},isLastItemOfArray:(t,e)=>!!Array.isArray(e)&&t===e[e.length-1]}}),z=(r(454),Object(f.a)(R,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"mobile-dropdown-wrapper",class:{open:t.open}},[r("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[r("span",{staticClass:"title"},[t.item.icon?r("i",{class:"iconfont "+t.iconPrefix+t.item.icon}):t._e(),t._v("\n "+t._s(t.item.text)+"\n ")]),t._v(" "),r("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),r("DropdownTransition",[r("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(e,i){return r("li",{key:e.link||i,staticClass:"dropdown-item"},["links"===e.type?r("h4",{staticClass:"dropdown-subtitle"},[e.link?r("NavLink",{attrs:{item:e},on:{focusout:function(r){t.isLastItemOfArray(e,t.item.children)&&0===e.children.length&&t.setOpen(!1)}}}):r("span",[t._v(t._s(e.text))])],1):t._e(),t._v(" "),"links"===e.type?r("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(e.items,(function(i){return r("li",{key:i.link,staticClass:"dropdown-subitem"},[r("NavLink",{attrs:{item:i},on:{focusout:function(r){t.isLastItemOfArray(i,e.items)&&t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0):r("NavLink",{attrs:{item:e},on:{focusout:function(r){t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null).exports),D=a.a.extend({name:"SidebarNavLinks",components:{RepoLink:m,SidebarDropdownLink:z,NavLink:o.a},computed:{navLinks(){return(this.$themeLocaleConfig.nav||this.$themeConfig.nav||[]).map(t=>d(t))}}}),U=(r(455),Object(f.a)(D,(function(){var t=this.$createElement,e=this._self._c||t;return e("nav",{staticClass:"sidebar-nav-links"},[this._l(this.navLinks,(function(t){return e("div",{key:t.link,staticClass:"nav-item"},["links"===t.type?e("SidebarDropdownLink",{attrs:{item:t}}):e("NavLink",{attrs:{item:t}})],1)})),this._v(" "),e("RepoLink")],2)}),[],!1,null,null,null).exports),N=r(336),q=a.a.extend({name:"Sidebar",components:{BlogInfo:$.a,BloggerInfo:j.a,SidebarLinks:N.default,SidebarNavLinks:U},props:{items:{type:Array,required:!0}},computed:{blogConfig(){return this.$themeConfig.blog||{}},sidebarDisplay(){return this.blogConfig.sidebarDisplay||"none"}}}),F=(r(458),Object(f.a)(q,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("aside",{staticClass:"sidebar"},["none"!==t.sidebarDisplay?[r("BloggerInfo",{class:{mobile:"mobile"===t.sidebarDisplay}}),t._v(" "),r("hr")]:t._e(),t._v(" "),t._t("top"),t._v(" "),r("SidebarNavLinks"),t._v(" "),t._t("center"),t._v(" "),r("SidebarLinks",{attrs:{depth:0,items:t.items}}),t._v(" "),t._t("bottom"),t._v(" "),t.$frontmatter.blog&&!1!==t.$themeConfig.blog?r("BlogInfo"):t._e()],2)}),[],!1,null,null,null).exports),H=r(459),W=r.n(H),K=n.a.extend({name:"Common",components:{Navbar:I,PageFooter:O,Password:L.a,Sidebar:F},props:{navbar:{type:Boolean,default:!0},sidebar:{type:Boolean,default:!0}},data:()=>({isSidebarOpen:!1,hideNavbar:!1,touchStart:{clientX:0,clientY:0}}),computed:{enableNavbar(){if(!1===this.navbar)return!1;const{frontmatter:t}=this.$page;return!1!==t.navbar&&!1!==this.$themeConfig.navbar&&Boolean(this.$title||this.$themeConfig.logo||this.$themeConfig.repo||this.$themeConfig.nav||this.$themeLocaleConfig.nav)},enableSidebar(){return!1!==this.sidebar&&(!this.$frontmatter.home&&!1!==this.$frontmatter.sidebar&&0!==this.sidebarItems.length)},sidebarItems(){return!1===this.sidebar?[]:Object(i.a)(this.$page,this.$site,this.$localePath)},pageClasses(){const t=this.$page.frontmatter.pageClass;return[{"has-navbar":this.enableNavbar,"has-sidebar":this.enableSidebar,"has-anchor":this.enableAnchor,"hide-navbar":this.hideNavbar,"sidebar-open":this.isSidebarOpen},t]},headers(){return this.getHeader(this.sidebarItems)},enableAnchor(){return this.$frontmatter.anchorDisplay||!1!==this.$themeConfig.anchorDisplay&&!1!==this.$frontmatter.anchorDisplay}},mounted(){let t=0;this.$router.afterEach(()=>{this.isSidebarOpen=!1}),window.addEventListener("scroll",W()(()=>{const e=this.getScrollTop();t58?this.isSidebarOpen||(this.hideNavbar=!0):this.hideNavbar=!1,t=e},300))},methods:{getScrollTop:()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,toggleSidebar(t){this.isSidebarOpen="boolean"==typeof t?t:!this.isSidebarOpen,this.$emit("toggle-sidebar",this.isSidebarOpen)},onTouchStart(t){this.touchStart={clientX:t.changedTouches[0].clientX,clientY:t.changedTouches[0].clientY}},onTouchEnd(t){const e=t.changedTouches[0].clientX-this.touchStart.clientX,r=t.changedTouches[0].clientY-this.touchStart.clientY;Math.abs(e)>Math.abs(r)&&Math.abs(e)>40&&(e>0&&this.touchStart.clientX<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))},getHeader(t){for(let e=0;eObject(n.a)(t)):[]},readingTimeContent(){return`PT${Math.max(Math.round(this.$page.readingTime.minutes),1)}M`},readingTime(){const{minute:t,time:e}={"/zh/":{word:"约 $word 字",minute:"小于 1 分钟",time:"大约 $time 分钟"},"/en/":{word:"About $word words",minute:"Less than 1 minute",time:"About $time min"},"/de/":{word:"Um die $word Wörter",minute:"Weniger als eine Minute",time:"Ungefähr $time min"},"/vi/":{word:"Khoảng $word từ",minute:"Ít hơn 1 phút",time:"Khoảng $time phút"},"/uk/":{word:"Про $word слова",minute:"Менше 1 хвилини",time:"Приблизно $time хв"},"/ru/":{word:"Про $word слова",minute:"Меньше 1 минуты",time:"Приблизительно $time минут"},"/":{word:"About $word words",minute:"Less than 1 minute",time:"About $time min"}}[this.$localePath||"/"];return this.article.readingTime.minutes<1?t:e.replace("$time",Math.round(this.article.readingTime.minutes).toString())},authorText(){return{"/zh/":{author:"作者🖊",time:"写作日期📅",origin:"原创💡",views:"访问量🔢",category:"分类🌈",tag:"标签🏷",readingTime:"阅读时间⌛",words:"字数🔠"},"/en/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"},"/de/":{author:"Autor🖊",time:"Datum📅",origin:"Original💡",views:"Besucher🔢",category:"Kategorie🌈",tag:"Tags🏷",readingTime:"Lesezeit⌛",words:"Wörter🔠"},"/vi/":{author:"Người viết🖊",time:"Ngày viết📅",origin:"Nguồn💡",views:"Views của trang🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Thời gian đọc⌛",words:"Words🔠"},"/uk/":{author:"Автор🖊",time:"Дата написання📅",origin:"Оригінал💡",views:"Перегляди сторінки🔢",category:"Категорія🌈",tag:"Теги🏷",readingTime:"Час читання⌛",words:"Слова🔠"},"/ru/":{author:"Автор🖊",time:"Дата написания📅",origin:"Оригинал💡",views:"Просмотры страницы🔢",category:"Категория🌈",tag:"Тэги🏷",readingTime:"Время чтения⌛",words:"Слова🔠"},"/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"}}[this.$localePath||"/"].author},timeText(){return{"/zh/":{author:"作者🖊",time:"写作日期📅",origin:"原创💡",views:"访问量🔢",category:"分类🌈",tag:"标签🏷",readingTime:"阅读时间⌛",words:"字数🔠"},"/en/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"},"/de/":{author:"Autor🖊",time:"Datum📅",origin:"Original💡",views:"Besucher🔢",category:"Kategorie🌈",tag:"Tags🏷",readingTime:"Lesezeit⌛",words:"Wörter🔠"},"/vi/":{author:"Người viết🖊",time:"Ngày viết📅",origin:"Nguồn💡",views:"Views của trang🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Thời gian đọc⌛",words:"Words🔠"},"/uk/":{author:"Автор🖊",time:"Дата написання📅",origin:"Оригінал💡",views:"Перегляди сторінки🔢",category:"Категорія🌈",tag:"Теги🏷",readingTime:"Час читання⌛",words:"Слова🔠"},"/ru/":{author:"Автор🖊",time:"Дата написания📅",origin:"Оригинал💡",views:"Просмотры страницы🔢",category:"Категория🌈",tag:"Тэги🏷",readingTime:"Время чтения⌛",words:"Слова🔠"},"/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"}}[this.$localePath||"/"].time},tagText(){return{"/zh/":{author:"作者🖊",time:"写作日期📅",origin:"原创💡",views:"访问量🔢",category:"分类🌈",tag:"标签🏷",readingTime:"阅读时间⌛",words:"字数🔠"},"/en/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"},"/de/":{author:"Autor🖊",time:"Datum📅",origin:"Original💡",views:"Besucher🔢",category:"Kategorie🌈",tag:"Tags🏷",readingTime:"Lesezeit⌛",words:"Wörter🔠"},"/vi/":{author:"Người viết🖊",time:"Ngày viết📅",origin:"Nguồn💡",views:"Views của trang🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Thời gian đọc⌛",words:"Words🔠"},"/uk/":{author:"Автор🖊",time:"Дата написання📅",origin:"Оригінал💡",views:"Перегляди сторінки🔢",category:"Категорія🌈",tag:"Теги🏷",readingTime:"Час читання⌛",words:"Слова🔠"},"/ru/":{author:"Автор🖊",time:"Дата написания📅",origin:"Оригинал💡",views:"Просмотры страницы🔢",category:"Категория🌈",tag:"Тэги🏷",readingTime:"Время чтения⌛",words:"Слова🔠"},"/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"}}[this.$localePath||"/"].tag},readingTimeText(){return{"/zh/":{author:"作者🖊",time:"写作日期📅",origin:"原创💡",views:"访问量🔢",category:"分类🌈",tag:"标签🏷",readingTime:"阅读时间⌛",words:"字数🔠"},"/en/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"},"/de/":{author:"Autor🖊",time:"Datum📅",origin:"Original💡",views:"Besucher🔢",category:"Kategorie🌈",tag:"Tags🏷",readingTime:"Lesezeit⌛",words:"Wörter🔠"},"/vi/":{author:"Người viết🖊",time:"Ngày viết📅",origin:"Nguồn💡",views:"Views của trang🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Thời gian đọc⌛",words:"Words🔠"},"/uk/":{author:"Автор🖊",time:"Дата написання📅",origin:"Оригінал💡",views:"Перегляди сторінки🔢",category:"Категорія🌈",tag:"Теги🏷",readingTime:"Час читання⌛",words:"Слова🔠"},"/ru/":{author:"Автор🖊",time:"Дата написания📅",origin:"Оригинал💡",views:"Просмотры страницы🔢",category:"Категория🌈",tag:"Тэги🏷",readingTime:"Время чтения⌛",words:"Слова🔠"},"/":{author:"Author🖊",time:"Writing Date📅",origin:"Original💡",views:"Page views🔢",category:"Category🌈",tag:"Tags🏷",readingTime:"Reading Time⌛",words:"Words🔠"}}[this.$localePath||"/"].readingTime}}}),u=(r(439),r(1)),d=Object(u.a)(h,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.author||t.time?r("div",{staticClass:"article-info"},[t.author?r("span",{attrs:{"aria-label":t.authorText,"data-balloon-pos":"down"}},[r("AuthorIcon"),t._v(" "),r("span",{attrs:{property:"author"},domProps:{textContent:t._s(t.author)}})],1):t._e(),t._v(" "),t.time?r("span",{staticClass:"time",attrs:{"aria-label":t.timeText,"data-balloon-pos":"down"}},[r("CalendarIcon"),t._v(" "),r("span",{attrs:{property:"datePublished"},domProps:{textContent:t._s(t.time)}})],1):t._e(),t._v(" "),t.article.frontmatter.category?r("CategoryInfo",{attrs:{category:t.article.frontmatter.category}}):t._e(),t._v(" "),0!==t.tags.length?r("TagInfo",{attrs:{tags:t.tags}}):t._e(),t._v(" "),t.readingTime?r("span",{staticClass:"read-time-info",attrs:{"aria-label":t.readingTimeText,"data-balloon-pos":"down"}},[r("TimerIcon"),t._v(" "),r("span",{domProps:{textContent:t._s(t.readingTime)}}),t._v(" "),r("meta",{attrs:{property:"timeRequired",content:t.readingTimeContent}})],1):t._e()],1):t._e()}),[],!1,null,null,null).exports,l=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon lock-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M787.168 952.268H236.832c-30.395 0-55.033-24.638-55.033-55.033V429.45c0-30.395 24.638-55.034 55.033-55.034h82.55V264.35c0-106.38 86.238-192.618 192.618-192.618S704.618 157.97 704.618 264.35v110.066h82.55c30.395 0 55.033 24.639 55.033 55.034v467.785c0 30.395-24.639 55.033-55.033 55.033zM484.483 672.046v115.122h55.034V672.046c31.99-11.373 55.033-41.605 55.033-77.496 0-45.592-36.958-82.55-82.55-82.55s-82.55 36.958-82.55 82.55c0 35.89 23.042 66.123 55.033 77.496zM622.067 264.35c0-60.788-49.28-110.067-110.067-110.067s-110.067 49.28-110.067 110.067v110.066h220.135V264.35z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,p=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon presentation-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M896 170.667v426.666a85.333 85.333 0 0 1-85.333 85.334h-256v61.184l192.597 115.584-43.861 73.13-148.736-89.173v95.275h-85.334v-95.318l-148.736 89.216-43.861-73.13 192.597-115.627v-61.141h-256A85.333 85.333 0 0 1 128 597.333V170.667H85.333V85.333h853.334v85.334H896zm-682.667 0v426.666h597.334V170.667H213.333zM426.667 512h-85.334V341.333h85.334V512zm128 0h-85.334V256h85.334v256zm128 0h-85.334V384h85.334v128z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,b=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon sticky-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M989.922 444.341 580.15 34.909H119.411l870.511 870.597V444.34z"}}),this._v(" "),e("path",{staticClass:"sticky-text",attrs:{d:"m621.368 219.398-43.833-43.77-126.663 126.841-32.827-32.78L544.71 142.846l-43.735-43.674 26.739-26.775L648.11 192.621l-26.741 26.776zm-38.762 65.278c24.03-24.065 50.614-36.637 79.751-37.716 29.135-1.077 55.24 9.904 78.314 32.945 21.95 21.919 32.324 46.87 31.121 74.852s-13.258 53.441-36.167 76.383c-23.901 23.935-50.255 36.407-79.057 37.416-28.807 1.013-54.482-9.74-77.025-32.252-22.016-21.985-32.69-47.068-32.015-75.244.673-28.18 12.366-53.639 35.078-76.384zm36.196 32.578c-14.921 14.943-23.517 30.756-25.783 47.439-2.27 16.684 2.88 31.298 15.441 43.842 12.826 12.807 27.348 18.234 43.567 16.271 16.217-1.96 31.986-10.608 47.303-25.948 15.977-15.998 25.133-32.11 27.467-48.332 2.334-16.221-2.813-30.637-15.442-43.247-12.827-12.81-27.679-18.133-44.558-15.973-16.879 2.158-32.878 10.809-47.995 25.948zm161.326 207.05-53.477 53.554-32.727-32.681L847.325 391.56l52.859 52.784c38.214 38.16 41.146 73.44 8.797 105.834-15.713 15.737-34.076 22.586-55.087 20.552-21.012-2.032-39.98-11.898-56.905-29.591l-16.861-16.834zm74.572-74.676-49.517 49.586 14.182 14.162c19.24 19.211 37.21 20.455 53.914 3.728 16.305-16.33 14.941-34.002-4.1-53.016l-14.479-14.46z"}})])}),[],!1,null,null,null).exports,g=r(213),m=i.a.extend({name:"ArticleItem",components:{ArticleInfo:d,LockIcon:l,StickyIcon:b,PresentationIcon:p},props:{article:{type:Object,required:!0}},computed:{isEncrypted(){return 0!==Object(g.a)(this.$themeConfig.encrypt,this.article.path).length||Boolean(this.article.frontmatter.password)},excerpt(){return this.article.excerpt?this.article.excerpt:this.article.frontmatter.description||this.article.frontmatter.summary||""}}}),v=(r(440),Object(u.a)(m,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("article",{staticClass:"article",attrs:{vocab:"https://schema.org/",typeof:"Article"}},[t.article.frontmatter.sticky?r("StickyIcon"):t._e(),t._v(" "),r("header",{staticClass:"title",on:{click:function(e){return t.$router.push(t.article.path)}}},[t.isEncrypted?r("LockIcon"):t._e(),t._v(" "),"Slide"===t.article.frontmatter.layout?r("PresentationIcon"):t._e(),t._v(" "),r("span",{attrs:{property:"headline"}},[t._v(t._s(t.article.title))]),t._v(" "),t.article.frontmatter.image?r("meta",{attrs:{property:"image",content:t.$withBase(t.article.frontmatter.image)}}):t._e()],1),t._v(" "),t.excerpt?r("div",{staticClass:"excerpt",domProps:{innerHTML:t._s(t.excerpt)}}):t._e(),t._v(" "),r("hr",{staticClass:"hr"}),t._v(" "),r("ArticleInfo",{attrs:{article:t.article}})],1)}),[],!1,null,null,null).exports),y=(r(441),Object(u.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("svg",{staticClass:"empty-icon",attrs:{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"}},[r("defs",[r("linearGradient",{attrs:{id:"linear-gradient",x1:"512.342",y1:"2266.13",x2:"512.342",y2:"666.063",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:".919","stop-color":"#e6e6e6","stop-opacity":"0"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#e6e6e6"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-2",x1:"528.912",y1:"774",x2:"388.088",y2:"612",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#e6e6e6","stop-opacity":"0"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-3",x1:"213.219",y1:"721.704",x2:"251.313",y2:"683.61",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#d7d7d7"}}),t._v(" "),r("stop",{attrs:{offset:".485","stop-color":"#fafafa"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#fafafa"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-4",x1:"724.813",y1:"821.718",x2:"768.656",y2:"777.876",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#fafafa"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-5",x1:"513.493",y1:"714.594",x2:"471.007",y2:"544.188",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#999"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#ccc"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-6",x1:"440.156",y1:"564.031",x2:"508.594",y2:"495.594",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#f0f0f0"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-7",x1:"660.988",y1:"754.156",x2:"608.637",y2:"544.188","xlink:href":"#linear-gradient-5"}}),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-8",x1:"479.188",y1:"774.219",x2:"649.782",y2:"603.625",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#b3b3b3"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#e6e6e6"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-9",x1:"447.121",y1:"774.219",x2:"394.661",y2:"563.813","xlink:href":"#linear-gradient-5"}}),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-10",x1:"494",y1:"597",x2:"628",y2:"463","xlink:href":"#linear-gradient-6"}}),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-11",x1:"610.485",y1:"604.938",x2:"697.298",y2:"518.125",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#fff"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-12",x1:"457.438",y1:"619.25",x2:"353.469",y2:"619.25",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#e6e6e6","stop-opacity":"0"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#e6e6e6"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-14",x1:"542.734",y1:"674.25",x2:"615.672",y2:"601.313","xlink:href":"#linear-gradient-6"}}),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-15",x1:"627.933",y1:"358.938",x2:"685.192",y2:"422.531",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:".4","stop-color":"#e6e6e6","stop-opacity":".4"}}),t._v(" "),r("stop",{attrs:{offset:".443","stop-color":"#fff"}}),t._v(" "),r("stop",{attrs:{offset:".6","stop-color":"#ccc"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-16",x1:"618.547",y1:"422.531",x2:"681.547",y2:"359.531",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#e6e6e6"}}),t._v(" "),r("stop",{attrs:{offset:".761","stop-color":"#fff"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#f0f0f0"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-17",x1:"625",y1:"441.5",x2:"697",y2:"369.5",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:".761","stop-color":"#fff"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#f0f0f0"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-18",x1:"627.681",y1:"361.438",x2:"692.257",y2:"433.156","xlink:href":"#linear-gradient-15"}}),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-19",x1:"561.414",y1:"735.438",x2:"573.149",y2:"688.375","xlink:href":"#linear-gradient-11"}}),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-20",x1:"405",y1:"485.875",x2:"440",y2:"450.875",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":".702"}})],1),t._v(" "),r("linearGradient",{attrs:{id:"linear-gradient-21",x1:"404.61",y1:"486.906",x2:"441.86",y2:"449.656",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:".495","stop-color":"#ccc","stop-opacity":".702"}}),t._v(" "),r("stop",{attrs:{offset:".498","stop-color":"#ccc"}}),t._v(" "),r("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":".302"}})],1),t._v(" "),r("radialGradient",{attrs:{id:"radial-gradient",cx:"329.297",cy:"647.578",r:"8.172",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:"0","stop-color":"#fafafa"}}),t._v(" "),r("stop",{attrs:{offset:"1.2","stop-color":"#e6e6e6"}})],1),t._v(" "),r("radialGradient",{attrs:{id:"radial-gradient-2",cx:"802.297",cy:"673.578",r:"8.172","xlink:href":"#radial-gradient"}}),t._v(" "),r("radialGradient",{attrs:{id:"radial-gradient-3",cx:"774.844",cy:"642.75",r:"5.531","xlink:href":"#radial-gradient"}}),t._v(" "),r("style",[t._v("\n .cls-17,\n .cls-19,\n .cls-27,\n .cls-28,\n .cls-29,\n .cls-3,\n .cls-30,\n .cls-6 {\n fill-rule: evenodd;\n }\n .cls-3 {\n fill: #b3b3b3;\n }\n .cls-6 {\n fill: #ccc;\n }\n .cls-17 {\n fill: url(#linear-gradient-12);\n }\n .cls-19 {\n fill: #fff;\n }\n .cls-27 {\n fill: #f8cfad;\n }\n .cls-28 {\n fill: #141a33;\n }\n .cls-29 {\n fill: #f0c5a8;\n }\n .cls-30 {\n fill: #232c57;\n }\n ")])],1),t._v(" "),r("g",[r("path",{staticStyle:{fill:"url(#linear-gradient)","fill-rule":"evenodd"},attrs:{d:"M512.33 666.07c441.828 0 800 358.18 800 800.03s-358.172 800.02-800 800.02-800-358.18-800-800.02 358.17-800.03 800-800.03z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-2)","fill-rule":"evenodd"},attrs:{d:"m272 694 242-82 131 119-188 43z"}}),t._v(" "),r("path",{staticClass:"cls-3",attrs:{d:"M232.391 723.534a2.4 2.4 0 0 1 2.4 2.4v17.725a2.4 2.4 0 0 1-4.8 0v-17.725a2.4 2.4 0 0 1 2.4-2.4z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-3)","fill-rule":"evenodd"},attrs:{d:"M232.255 676.559c10.33 0 17.067 15.408 18.7 28.493 1.619 12.942-2.372 23.694-18.7 23.694-16.878 0-20.213-10.733-18.7-23.694 1.633-14.061 8.37-28.493 18.7-28.493z"}}),t._v(" "),r("path",{staticClass:"cls-3",attrs:{d:"M745.853 826h.938a2.4 2.4 0 0 1 2.4 2.4v22.238a2.4 2.4 0 0 1-2.4 2.4h-.938a2.4 2.4 0 0 1-2.4-2.4V828.4a2.4 2.4 0 0 1 2.4-2.4z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-4)","fill-rule":"evenodd"},attrs:{d:"M746.727 830.3c-19.438 0-23.278-9.326-21.541-20.59a34.467 34.467 0 0 1 3.289-10.369 16.628 16.628 0 0 1 0-9.112c2.889-12.327 12.059-20.911 18.356-20.911 6.56 0 15.468 9.1 18.356 20.911a14.589 14.589 0 0 1-.335 9.217 34.36 34.36 0 0 1 3.419 10.264c1.861 11.243-2.735 20.59-21.544 20.59z"}}),t._v(" "),r("path",{staticClass:"cls-6",attrs:{d:"M328.841 654.562a6.571 6.571 0 0 0-5.2-5.027q-4.107-.952-.034-2.045a6.571 6.571 0 0 0 5.027-5.2q.952-4.109 2.045-.035a6.569 6.569 0 0 0 5.2 5.027q4.109.954.035 2.045a6.569 6.569 0 0 0-5.027 5.2q-.955 4.108-2.046.035z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#radial-gradient)","fill-rule":"evenodd"},attrs:{d:"M328.383 653.73a6.567 6.567 0 0 0-5.2-5.027q-4.109-.954-.035-2.045a6.568 6.568 0 0 0 5.027-5.2q.954-4.107 2.046-.034a6.568 6.568 0 0 0 5.2 5.027q4.107.952.035 2.045a6.568 6.568 0 0 0-5.027 5.2q-.954 4.104-2.046.034z"}}),t._v(" "),r("path",{staticClass:"cls-6",attrs:{d:"M801.841 680.562a6.571 6.571 0 0 0-5.2-5.027q-4.107-.952-.034-2.045a6.571 6.571 0 0 0 5.027-5.2q.952-4.109 2.045-.035a6.569 6.569 0 0 0 5.2 5.027q4.108.954.035 2.045a6.569 6.569 0 0 0-5.027 5.2q-.955 4.108-2.046.035z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#radial-gradient-2)","fill-rule":"evenodd"},attrs:{d:"M801.383 679.73a6.567 6.567 0 0 0-5.2-5.027q-4.108-.954-.035-2.045a6.568 6.568 0 0 0 5.027-5.2q.954-4.107 2.046-.034a6.568 6.568 0 0 0 5.2 5.027q4.107.952.035 2.045a6.568 6.568 0 0 0-5.027 5.2q-.954 4.104-2.046.034z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#radial-gradient-3)","fill-rule":"evenodd"},attrs:{d:"M774.21 646.9a4.446 4.446 0 0 0-3.517-3.4q-2.778-.643-.023-1.383a4.443 4.443 0 0 0 3.4-3.517q.645-2.778 1.383-.023a4.443 4.443 0 0 0 3.517 3.4q2.778.645.023 1.383a4.446 4.446 0 0 0-3.4 3.517q-.645 2.78-1.383.023z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-5)","fill-rule":"evenodd"},attrs:{d:"m385.6 714.6.158-150.658L598.9 544.174l-.158 150.658z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-6)","fill-rule":"evenodd"},attrs:{d:"m385.474 564.031 214.763-19.383-36.171-49.067-215.559 17.634z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-7)","fill-rule":"evenodd"},attrs:{d:"m598.744 694.832.156-150.658 71.975 59.319-.158 150.658z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-8)","fill-rule":"evenodd"},attrs:{d:"m457.064 774.209.158-150.658 214.691-19.914-.158 150.663z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-9)","fill-rule":"evenodd"},attrs:{d:"m384.566 714.459.158-150.659 72.5 59.75-.158 150.658z"}}),t._v(" "),r("path",{staticStyle:{fill:"none","stroke-width":"3px","stroke-dasharray":"12 6",stroke:"url(#linear-gradient-10)","fill-rule":"evenodd"},attrs:{d:"M494 640s75.357-58.4 42-83-38.887 1.663-37 14 53.847 12.465 54-26c.2-49.979 75-125 75-125"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-11)","fill-rule":"evenodd"},attrs:{d:"m670.275 604.939-72.041-59.9 38.476-26.909 72.86 58.159z"}}),t._v(" "),r("path",{staticClass:"cls-17",attrs:{d:"m425.5 674.383-72.042-59.9 31.109-50.347 72.86 58.16z"}}),t._v(" "),r("path",{staticClass:"cls-17",attrs:{d:"m425.5 674.383-72.042-59.9 31.109-50.347 72.86 58.16z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-14)","fill-rule":"evenodd"},attrs:{d:"m487.918 674.235 214.482-22.57-31.1-50.346-215.309 20.833z"}}),t._v(" "),r("path",{staticClass:"cls-19",attrs:{d:"m697.363 358.927-69.58 62.511-12.035 1.082z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-15)","fill-rule":"evenodd"},attrs:{d:"m697.363 358.927-69.58 62.511-12.035 1.082z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-16)","fill-rule":"evenodd"},attrs:{d:"M615.748 422.52 604 413l92.089-53.46"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-17)","fill-rule":"evenodd"},attrs:{d:"m625 432 12 18 60-89"}}),t._v(" "),r("path",{staticClass:"cls-19",attrs:{d:"m626.98 421.335-2.471 11.828 70.918-71.735"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-18)","fill-rule":"evenodd"},attrs:{d:"m626.98 421.335-2.471 11.828 70.918-71.735"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-19)","fill-rule":"evenodd"},attrs:{d:"m494.814 735.44 21.293-2.1v-6.613l-13.4 1.319v-6.965l10.977-1.08v-6.613l-10.977 1.08v-6.084l12.917-1.27v-6.525l-20.808 2.047v32.8zM521 732.863l7.054-.694v-11.241a106.361 106.361 0 0 0-1.014-11.274l.176-.017 2.645 7.586 4.453 11.553 4.32-.425 4.408-12.424 2.733-8.116.177-.018a111.811 111.811 0 0 0-1.014 11.474v11.241l7.185-.707V697l-8.552.841-5.025 14.646c-.618 1.956-1.147 4.08-1.808 6.173l-.22.022c-.617-1.968-1.146-3.987-1.808-5.818l-5.2-13.639-8.508.837v32.8zm37.213-3.661 7.891-.776v-10.889l3.835-.377c6.922-.681 12.961-4.714 12.961-12.517 0-8.111-5.951-10.082-13.181-9.371l-11.504 1.128v32.8zm7.891-17.881v-9.478l3.218-.316c3.792-.373 5.908.565 5.908 3.871 0 3.218-1.852 5.208-5.687 5.585zM594 725.682l7.891-.777v-26.274l8.905-.876v-6.524l-25.657 2.524v6.524l8.861-.871v26.274zm27.991-2.754 7.847-.772v-11.594l9.919-22.18-8.244.811-2.733 7.542c-.925 2.56-1.807 4.939-2.733 7.587l-.176.018c-.926-2.466-1.764-4.676-2.645-7.058l-2.734-7-8.375.824 9.874 20.233v11.594z"}}),t._v(" "),r("path",{staticClass:"cls-6",attrs:{d:"M408.938 457.309a17.5 17.5 0 0 0 21.374 26.725 17.5 17.5 0 1 1-16.306-30.955 17.442 17.442 0 0 0-5.068 4.23z"}}),t._v(" "),r("circle",{staticStyle:{fill:"url(#linear-gradient-20)"},attrs:{cx:"422.5",cy:"468.375",r:"17.5"}}),t._v(" "),r("path",{staticClass:"cls-6",attrs:{d:"M391.76 451.5c-2.358 4.419 9.827 15.52 27.215 24.8 15.131 8.071 29.212 12.1 34.166 10.093-4.191 2.772-18.943-1.24-34.86-9.73-17.388-9.275-29.573-20.376-27.215-24.8a2.96 2.96 0 0 1 1.585-1.3 2.606 2.606 0 0 0-.891.937z"}}),t._v(" "),r("path",{staticStyle:{fill:"url(#linear-gradient-21)","fill-rule":"evenodd"},attrs:{d:"M418.975 476.29c-17.388-9.275-29.573-20.376-27.215-24.8s18.363-.484 35.751 8.791 29.572 20.376 27.215 24.8-18.364.483-35.751-8.791zm31.634 5.732c1.824-3.42-8.789-12.642-23.7-20.6s-28.486-11.633-30.31-8.213 8.789 12.642 23.7 20.6 28.486 11.633 30.31 8.213zm-36.645-29.008-2.775 1.452.032 1.751 28.637 14.183.266-4.559z"}})]),t._v(" "),r("g",{staticClass:"people"},[r("path",{staticClass:"cls-27",attrs:{d:"m612.131 676.5 1.362 3.532 3.255-2.324-1.361-3.532z"}}),t._v(" "),r("path",{staticClass:"cls-27",attrs:{d:"m629.131 665.5 1.362 3.532 3.255-2.324-1.361-3.532z"}}),t._v(" "),r("path",{staticClass:"cls-28",attrs:{d:"m617.764 678.184-3.162-.078a11.028 11.028 0 0 0-1.034 3.454c-.258 2.006-1.177 5-.449 5.367 1.5 2.659 4.118-.215 4.118-.215s2.187-2.848 1.925-5.265c-.106-.973-1.181-1.869-1.398-3.263z"}}),t._v(" "),r("path",{staticClass:"cls-28",attrs:{d:"m633.781 665.855 3.019.945a11.008 11.008 0 0 1-.137 3.6c-.4 1.981-.179 4.166-.986 4.277-2.283 2.03-3.827-1.533-3.827-1.533s-1.473-2.456-.444-4.659c.412-.88 1.718-1.385 2.375-2.63z"}}),t._v(" "),r("path",{staticClass:"cls-29",attrs:{d:"M599.935 592.534s10.293 9.761 11.95 7.564 3.536-3.463-6.758-13.65z"}}),t._v(" "),r("path",{staticClass:"cls-27",attrs:{d:"M611.3 596.361c1.674-1.105 11.5 7.048 14.5 11.774s-12.705-4.36-14.632-6.776-1.54-3.893.132-4.998z"}}),t._v(" "),r("path",{staticClass:"cls-27",attrs:{d:"M621.815 607.988s1.809 2.549 2.433 1.756 2.475-1.064 2.449-1.138.1-.819 1.288-2.331-3.8-3.632-5.81-.494a2.556 2.556 0 0 0-.36 2.207z"}}),t._v(" "),r("path",{staticClass:"cls-30",attrs:{d:"M598 617s14.968-5.618 17 7a150.235 150.235 0 0 1 2 22s12.666 11.836 16 19c0 0-4.753-1.629-4 2 0 0-18.132-14.647-19-19s-9.148-18.716-12-31z"}}),t._v(" "),r("path",{staticStyle:{fill:"#292966","fill-rule":"evenodd"},attrs:{d:"M589 622s14.968-5.618 17 7a150.235 150.235 0 0 1 2 22s4.666 17.836 8 25c0 0-4.753-1.629-4 2 0 0-10.132-20.647-11-25s-9.148-18.716-12-31z"}}),t._v(" "),r("path",{staticClass:"cls-29",attrs:{d:"M585.626 597.7s-10.292 9.761-11.95 7.563-3.536-3.463 6.758-13.65z"}}),t._v(" "),r("path",{staticClass:"cls-27",attrs:{d:"M574.259 601.529c-1.675-1.105-11.5 7.049-14.5 11.774s12.7-4.36 14.631-6.775 1.543-3.894-.131-4.999z"}}),t._v(" "),r("path",{staticClass:"cls-29",attrs:{d:"M591.715 577.752s-.606 1.681 1.48 3.716-3.615 5.307-4.645 2.85-.48-2.716-.48-2.716z"}}),t._v(" "),r("path",{staticClass:"cls-27",attrs:{d:"M583.527 574.123c-.839 1.043.491 3.873 1.453 5.449s2.749 2.833 3.364 2.428 4.088-2.657 4-4-.228-3.4-.228-3.4 2.562-1.641 2.154-2.916-2.916-.154-2.916-.154a15.853 15.853 0 0 0-.227-2.224c-.189-.929-6.887-1.445-7.827 2.6s.558 1.805.227 2.217z"}}),t._v(" "),r("path",{staticClass:"cls-30",attrs:{d:"M584.227 567.758c2.1-.885 7.2-3.684 10.125.318s.842 4.385.989 5.294-1.894 5.69-1.341 6.63-3.865.8-4.657-1.179-2.844-.539-2.227-1.224-1.3-4.456-2.916-2.154a9.252 9.252 0 0 0 .309-1.38c-.115.192.259-3.257-.673-1.32s-2.1 1.037-3.069.762-1.8-1.118-1.071-1.689c.023-.016 2.436-3.172 4.531-4.058z"}}),t._v(" "),r("path",{staticStyle:{fill:"#f6bb07","fill-rule":"evenodd"},attrs:{d:"M589 585c-2.584-.47-10.055.362-13 13 0 0 1.9 3.349 5 4s6 21 6 21 24.016 11.06 27-3c-.07-13.826-8-21-8-21s5.829-3.2 5-6-8.016-10.153-11-10-6 0-6 0-2.416 2.47-5 2z"}}),t._v(" "),r("path",{staticClass:"cls-27",attrs:{d:"M563.284 612.581s-.986 2.965-1.814 2.389-2.678-.3-2.675-.374-.333-.755-1.912-1.854 2.577-4.583 5.414-2.167a2.551 2.551 0 0 1 .987 2.006z"}})])])}),[],!1,null,null,null).exports),_=r(189),w=r(206),S=i.a.extend({name:"ArticleList",components:{ArticleItem:v,EmptyIcon:y,MyTransition:_.a},data:()=>({currentPage:1,articleList:[]}),computed:{blogConfig(){return this.$themeConfig.blog||{}},articlePerPage(){return this.blogConfig.perPage||10},filter(){const{path:t}=this.$route;return t.includes("/article")?t=>"Slide"!==t.frontmatter.layout:t.includes("/star")?t=>Boolean(t.frontmatter.star||t.frontmatter.sticky):t.includes("/encrypt")?t=>0!==Object(g.a)(this.$themeConfig.encrypt,t.path).length||Boolean(t.frontmatter.password):t.includes("/slide")?t=>"Slide"===t.frontmatter.layout:void 0},$articles(){return Object(w.c)(Object(w.a)(this.$site.pages,this.filter),"sticky")},articles(){return this.articleList.slice((this.currentPage-1)*this.articlePerPage,this.currentPage*this.articlePerPage)}},watch:{$route(t,e){t.path!==e.path&&(this.articleList=this.getArticleList(),this.currentPage=1)},currentPage(){const t=document.querySelector("#article-list").getBoundingClientRect().top+window.scrollY;setTimeout(()=>{window.scrollTo(0,t)},100)}},mounted(){this.articleList=this.getArticleList()},methods:{getArticleList(){try{return this.$pagination?this.$pagination._matchedPages:this.$articles}catch(t){return this.$articles}}}}),M=(r(444),Object(u.a)(S,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"article-wrapper",attrs:{id:"article-list"}},[t.articles.length?t._e():r("EmptyIcon",{staticClass:"empty"}),t._v(" "),t._l(t.articles,(function(t,e){return r("MyTransition",{key:t.path,attrs:{delay:.04*e}},[r("ArticleItem",{attrs:{article:t}})],1)})),t._v(" "),r("Pagination",{attrs:{"per-page":t.articlePerPage,total:t.articleList.length},model:{value:t.currentPage,callback:function(e){t.currentPage=e},expression:"currentPage"}})],2)}),[],!1,null,null,null));e.a=M.exports},function(t,e,r){"use strict";var i=r(186),n=r(0),a=n.a.extend({name:"Password",props:{page:{type:Boolean,default:!1}},data:()=>({password:"",hasTried:!1}),computed:{isMainPage(){return!0===this.$frontmatter.home},encrypt(){return this.$themeLocaleConfig.encrypt||Object(i.b)().encrypt}},methods:{verify(){this.hasTried=!1,this.$emit("password-verify",this.password),n.a.nextTick().then(()=>{this.hasTried=!0})}}}),s=(r(436),r(1)),o=Object(s.a)(a,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"password",class:{expand:t.page||t.isMainPage}},[r("div",{staticClass:"hint",class:{hasTried:t.hasTried}},[t._v("\n "+t._s(t.hasTried?t.encrypt.errorHint:t.encrypt.title)+"\n ")]),t._v(" "),r("div",{staticClass:"input"},[r("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{type:"password"},domProps:{value:t.password},on:{keypress:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.verify(e)},input:function(e){e.target.composing||(t.password=e.target.value)}}}),t._v(" "),r("button",{on:{click:t.verify}},[t._v("OK")])])])}),[],!1,null,null,null);e.a=o.exports},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return a})),r.d(e,"a",(function(){return c}));var i=r(192);const n=t=>{const e=t.map(t=>Object.assign({},t));let r;return e.forEach(t=>{2===t.level?r=t:r&&(r.children||(r.children=[]),r.children.push(t))}),e.filter(t=>2===t.level)},a=(t,e)=>{if(Object(i.f)(e))return{type:"external",path:e};const r=Object(i.i)(e);for(const e of t)if(Object(i.i)(e.regularPath)===r)return Object.assign(Object.assign({},e),{type:"page",path:Object(i.c)(e.path)});return console.error(`Sidebar: "${r}" has no matching page`),{type:"error",path:r}},s=(t,e,r)=>Object(i.k)(`${t}${e}`,r),o=(t,e,r,i="")=>{if("string"==typeof t)return a(e,s(i,t,r));if(Array.isArray(t))return Object.assign(a(e,s(i,t[0],r)),{title:t[1]});const n=t.children||[];return 0===n.length&&t.path?Object.assign(a(e,s(i,t.path,r)),{title:t.title}):Object.assign(Object.assign({},t),{type:"group",path:t.path?s(i,t.path,r):"",children:n.map(n=>o(n,e,r,`${i}${t.prefix||""}`)),collapsable:!1!==t.collapsable})},c=(t,e,r)=>{const{themeConfig:a,pages:s}=e,c=(r&&a.locales&&a.locales[r]||a).sidebar||a.sidebar;if("auto"===t.frontmatter.sidebar||"auto"===c)return(t=>{const e=t.headers?n(t.headers):[];return[{type:"group",collapsable:!1,title:t.title,icon:t.frontmatter.icon,path:"",children:e.map(e=>Object.assign(Object.assign({},e),{type:"header",basePath:t.path,path:`${t.path}#${e.slug}`,children:e.children}))}]})(t);if(!c)return[];const f=((t,e)=>{if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(Object(i.b)(t).startsWith(encodeURI(r)))return{base:r,config:e[r]};return console.warn(t+" do not have valid sidebar config"),!1})(t.regularPath,c);return f?f.config.map(t=>o(t,s,f.base)):[]}},function(t,e,r){"use strict";r.d(e,"a",(function(){return n}));var i=r(214);const n=r(237).a.extend({data:()=>({globalEncryptPassword:""}),computed:{isGlobalEncrypted(){if("global"===this.encryptOptions.status&&this.encryptOptions.global){const{global:t}=this.encryptOptions;return!("string"==typeof t?[t]:t).some(t=>Object(i.compareSync)(this.globalEncryptPassword,t))}return!1}},mounted(){const t=localStorage.getItem("globalPassword");t&&(this.globalEncryptPassword=t)},methods:{checkGlobalPassword(t){const{global:e}=this.encryptOptions;("string"==typeof e?[e]:e).some(e=>Object(i.compareSync)(t,e))&&(this.globalEncryptPassword=t,localStorage.setItem("globalPassword",t))}}})},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){"use strict";var i=r(183).Buffer,n=r(201).Transform;function a(t){n.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(184)(a,n),a.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(t){i=t}r(i)},a.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},a.prototype.update=function(t,e){if(function(t,e){if(!i.isBuffer(t)&&"string"!=typeof t)throw new TypeError(e+" must be a string or a buffer")}(t,"Data"),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,e));for(var r=this._block,n=0;this._blockOffset+t.length-n>=this._blockSize;){for(var a=this._blockOffset;a0;++s)this._length[s]+=o,(o=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*o);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e},a.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=a},function(t,e,r){"use strict";var i=r(208);t.exports=v;var n,a=r(245);v.ReadableState=m;r(216).EventEmitter;var s=function(t,e){return t.listeners(e).length},o=r(248),c=r(183).Buffer,f=global.Uint8Array||function(){};var h=Object.create(r(202));h.inherits=r(184);var u=r(217),d=void 0;d=u&&u.debuglog?u.debuglog("stream"):function(){};var l,p=r(356),b=r(249);h.inherits(v,o);var g=["error","close","destroy","pause","resume"];function m(t,e){t=t||{};var i=e instanceof(n=n||r(195));this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var a=t.highWaterMark,s=t.readableHighWaterMark,o=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:i&&(s||0===s)?s:o,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new p,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(l||(l=r(220).StringDecoder),this.decoder=new l(t.encoding),this.encoding=t.encoding)}function v(t){if(n=n||r(195),!(this instanceof v))return new v(t);this._readableState=new m(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),o.call(this)}function y(t,e,r,i,n){var a,s=t._readableState;null===e?(s.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,S(t)}(t,s)):(n||(a=function(t,e){var r;i=e,c.isBuffer(i)||i instanceof f||"string"==typeof e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var i;return r}(s,e)),a?t.emit("error",a):s.objectMode||e&&e.length>0?("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),i?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):_(t,s,e,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||0!==e.length?_(t,s,e,!1):k(t,s)):_(t,s,e,!1))):i||(s.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=8388608?t=8388608:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function S(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(d("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(M,t):M(t))}function M(t){d("emit readable"),t.emit("readable"),C(t)}function k(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(x,t,e))}function x(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=function(t,e,r){var i;ta.length?a.length:t;if(s===a.length?n+=a:n+=a.slice(0,t),0===(t-=s)){s===a.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=a.slice(s));break}++i}return e.length-=i,n}(t,e):function(t,e){var r=c.allocUnsafe(t),i=e.head,n=1;i.data.copy(r),t-=i.data.length;for(;i=i.next;){var a=i.data,s=t>a.length?a.length:t;if(a.copy(r,r.length-t,0,s),0===(t-=s)){s===a.length?(++n,i.next?e.head=i.next:e.head=e.tail=null):(e.head=i,i.data=a.slice(s));break}++n}return e.length-=n,r}(t,e);return i}(t,e.buffer,e.decoder),r);var r}function B(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(T,e,t))}function T(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function O(t,e){for(var r=0,i=t.length;r=e.highWaterMark||e.ended))return d("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?B(this):S(this),null;if(0===(t=w(t,e))&&e.ended)return 0===e.length&&B(this),null;var i,n=e.needReadable;return d("need readable",n),(0===e.length||e.length-t0?I(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==i&&this.emit("data",i),i},v.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},v.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,d("pipe count=%d opts=%j",n.pipesCount,e);var o=(!e||!1!==e.end)&&t!==process.stdout&&t!==process.stderr?f:v;function c(e,i){d("onunpipe"),e===r&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,d("cleanup"),t.removeListener("close",g),t.removeListener("finish",m),t.removeListener("drain",h),t.removeListener("error",b),t.removeListener("unpipe",c),r.removeListener("end",f),r.removeListener("end",v),r.removeListener("data",p),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||h())}function f(){d("onend"),t.end()}n.endEmitted?i.nextTick(o):r.once("end",o),t.on("unpipe",c);var h=function(t){return function(){var e=t._readableState;d("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,C(t))}}(r);t.on("drain",h);var u=!1;var l=!1;function p(e){d("ondata"),l=!1,!1!==t.write(e)||l||((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==O(n.pipes,t))&&!u&&(d("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,l=!0),r.pause())}function b(e){d("onerror",e),v(),t.removeListener("error",b),0===s(t,"error")&&t.emit("error",e)}function g(){t.removeListener("finish",m),v()}function m(){d("onfinish"),t.removeListener("close",g),v()}function v(){d("unpipe"),r.unpipe(t)}return r.on("data",p),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?a(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",b),t.once("close",g),t.once("finish",m),t.emit("pipe",r),n.flowing||(d("pipe resume"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function d(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function l(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}i(c,n),c.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},c.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,o=0|this._d,c=0|this._e,p=0|this._f,b=0|this._g,g=0|this._h,m=0;m<16;++m)r[m]=t.readInt32BE(4*m);for(;m<64;++m)r[m]=0|(((e=r[m-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[m-7]+l(r[m-15])+r[m-16];for(var v=0;v<64;++v){var y=g+d(c)+f(c,p,b)+s[v]+r[v]|0,_=u(i)+h(i,n,a)|0;g=b,b=p,p=c,c=o+y|0,o=a,a=n,n=i,i=y+_|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=o+this._d|0,this._e=c+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=g+this._h|0},c.prototype._hash=function(){var t=a.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=c},function(t,e,r){var i=r(184),n=r(197),a=r(183).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],o=new Array(160);function c(){this.init(),this._w=o,n.call(this,128,112)}function f(t,e,r){return r^t&(e^r)}function h(t,e,r){return t&e|r&(t|e)}function u(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function d(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function l(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function p(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function b(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function g(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function m(t,e){return t>>>0>>0?1:0}i(c,n),c.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},c.prototype._update=function(t){for(var e=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,a=0|this._dh,o=0|this._eh,c=0|this._fh,v=0|this._gh,y=0|this._hh,_=0|this._al,w=0|this._bl,S=0|this._cl,M=0|this._dl,k=0|this._el,x=0|this._fl,E=0|this._gl,A=0|this._hl,C=0;C<32;C+=2)e[C]=t.readInt32BE(4*C),e[C+1]=t.readInt32BE(4*C+4);for(;C<160;C+=2){var I=e[C-30],B=e[C-30+1],T=l(I,B),O=p(B,I),L=b(I=e[C-4],B=e[C-4+1]),$=g(B,I),j=e[C-14],P=e[C-14+1],R=e[C-32],z=e[C-32+1],D=O+P|0,U=T+j+m(D,O)|0;U=(U=U+L+m(D=D+$|0,$)|0)+R+m(D=D+z|0,z)|0,e[C]=U,e[C+1]=D}for(var N=0;N<160;N+=2){U=e[N],D=e[N+1];var q=h(r,i,n),F=h(_,w,S),H=u(r,_),W=u(_,r),K=d(o,k),V=d(k,o),Y=s[N],G=s[N+1],X=f(o,c,v),J=f(k,x,E),Z=A+V|0,Q=y+K+m(Z,A)|0;Q=(Q=(Q=Q+X+m(Z=Z+J|0,J)|0)+Y+m(Z=Z+G|0,G)|0)+U+m(Z=Z+D|0,D)|0;var tt=W+F|0,et=H+q+m(tt,W)|0;y=v,A=E,v=c,E=x,c=o,x=k,o=a+Q+m(k=M+Z|0,M)|0,a=n,M=S,n=i,S=w,i=r,w=_,r=Q+et+m(_=Z+tt|0,Z)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+S|0,this._dl=this._dl+M|0,this._el=this._el+k|0,this._fl=this._fl+x|0,this._gl=this._gl+E|0,this._hl=this._hl+A|0,this._ah=this._ah+r+m(this._al,_)|0,this._bh=this._bh+i+m(this._bl,w)|0,this._ch=this._ch+n+m(this._cl,S)|0,this._dh=this._dh+a+m(this._dl,M)|0,this._eh=this._eh+o+m(this._el,k)|0,this._fh=this._fh+c+m(this._fl,x)|0,this._gh=this._gh+v+m(this._gl,E)|0,this._hh=this._hh+y+m(this._hl,A)|0},c.prototype._hash=function(){var t=a.allocUnsafe(64);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=c},function(t,e,r){"use strict";var i=r(184),n=r(368),a=r(193),s=r(183).Buffer,o=r(254),c=r(221),f=r(222),h=s.alloc(128);function u(t,e){a.call(this,"digest"),"string"==typeof e&&(e=s.from(e));var r="sha512"===t||"sha384"===t?128:64;(this._alg=t,this._key=e,e.length>r)?e=("rmd160"===t?new c:f(t)).update(e).digest():e.lengthr||e!=e)throw new TypeError("Bad key length")}},function(t,e){var r;if(process.browser)r="utf-8";else if(process.version){r=parseInt(process.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary"}else r="utf-8";t.exports=r},function(t,e,r){var i=r(254),n=r(221),a=r(222),s=r(183).Buffer,o=r(257),c=r(258),f=r(260),h=s.alloc(128),u={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function d(t,e,r){var o=function(t){function e(e){return a(t).update(e).digest()}return"rmd160"===t||"ripemd160"===t?function(t){return(new n).update(t).digest()}:"md5"===t?i:e}(t),c="sha512"===t||"sha384"===t?128:64;e.length>c?e=o(e):e.length>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,i){for(var n=0,a=0,s=6;s>=0;s-=2){for(var o=0;o<=24;o+=8)n<<=1,n|=e>>>o+s&1;for(o=0;o<=24;o+=8)n<<=1,n|=t>>>o+s&1}for(s=6;s>=0;s-=2){for(o=1;o<=25;o+=8)a<<=1,a|=e>>>o+s&1;for(o=1;o<=25;o+=8)a<<=1,a|=t>>>o+s&1}r[i+0]=n>>>0,r[i+1]=a>>>0},e.rip=function(t,e,r,i){for(var n=0,a=0,s=0;s<4;s++)for(var o=24;o>=0;o-=8)n<<=1,n|=e>>>o+s&1,n<<=1,n|=t>>>o+s&1;for(s=4;s<8;s++)for(o=24;o>=0;o-=8)a<<=1,a|=e>>>o+s&1,a<<=1,a|=t>>>o+s&1;r[i+0]=n>>>0,r[i+1]=a>>>0},e.pc1=function(t,e,r,i){for(var n=0,a=0,s=7;s>=5;s--){for(var o=0;o<=24;o+=8)n<<=1,n|=e>>o+s&1;for(o=0;o<=24;o+=8)n<<=1,n|=t>>o+s&1}for(o=0;o<=24;o+=8)n<<=1,n|=e>>o+s&1;for(s=1;s<=3;s++){for(o=0;o<=24;o+=8)a<<=1,a|=e>>o+s&1;for(o=0;o<=24;o+=8)a<<=1,a|=t>>o+s&1}for(o=0;o<=24;o+=8)a<<=1,a|=t>>o+s&1;r[i+0]=n>>>0,r[i+1]=a>>>0},e.r28shl=function(t,e){return t<>>28-e};var i=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,r,n){for(var a=0,s=0,o=i.length>>>1,c=0;c>>i[c]&1;for(c=o;c>>i[c]&1;r[n+0]=a>>>0,r[n+1]=s>>>0},e.expand=function(t,e,r){var i=0,n=0;i=(1&t)<<5|t>>>27;for(var a=23;a>=15;a-=4)i<<=6,i|=t>>>a&63;for(a=11;a>=3;a-=4)n|=t>>>a&63,n<<=6;n|=(31&t)<<1|t>>>31,e[r+0]=i>>>0,e[r+1]=n>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,i=0;i<4;i++){r<<=4,r|=n[64*i+(t>>>18-6*i&63)]}for(i=0;i<4;i++){r<<=4,r|=n[256+64*i+(e>>>18-6*i&63)]}return r>>>0};var a=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>a[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var i=t.toString(2);i.length>>1];r=a.r28shl(r,o),n=a.r28shl(n,o),a.pc2(r,n,t.keys,s)}},c.prototype._update=function(t,e,r,i){var n=this._desState,s=a.readUInt32BE(t,e),o=a.readUInt32BE(t,e+4);a.ip(s,o,n.tmp,0),s=n.tmp[0],o=n.tmp[1],"encrypt"===this.type?this._encrypt(n,s,o,n.tmp,0):this._decrypt(n,s,o,n.tmp,0),s=n.tmp[0],o=n.tmp[1],a.writeUInt32BE(r,s,i),a.writeUInt32BE(r,o,i+4)},c.prototype._pad=function(t,e){for(var r=t.length-e,i=e;i>>0,s=d}a.rip(o,s,i,n)},c.prototype._decrypt=function(t,e,r,i,n){for(var s=r,o=e,c=t.keys.length-2;c>=0;c-=2){var f=t.keys[c],h=t.keys[c+1];a.expand(s,t.tmp,0),f^=t.tmp[0],h^=t.tmp[1];var u=a.substitute(f,h),d=s;s=(o^a.permute(u))>>>0,o=d}a.rip(s,o,i,n)}},function(t,e,r){var i=r(203),n=r(183).Buffer,a=r(264);function s(t){var e=t._cipher.encryptBlockRaw(t._prev);return a(t._prev),e}e.encrypt=function(t,e){var r=Math.ceil(e.length/16),a=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(16*r)]);for(var o=0;ot;)r.ishrn(1);if(r.isEven()&&r.iadd(o),r.testn(1)||r.iadd(c),e.cmp(c)){if(!e.cmp(f))for(;r.mod(h).cmp(u);)r.iadd(l)}else for(;r.mod(a).cmp(d);)r.iadd(l);if(g(p=r.shrn(1))&&g(r)&&m(p)&&m(r)&&s.test(p)&&s.test(r))return r}}},function(t,e,r){var i=r(185),n=r(227);function a(t){this.rand=t||new n.Rand}t.exports=a,a.create=function(t){return new a(t)},a.prototype._randbelow=function(t){var e=t.bitLength(),r=Math.ceil(e/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(t)>=0);return n},a.prototype._randrange=function(t,e){var r=e.sub(t);return t.add(this._randbelow(r))},a.prototype.test=function(t,e,r){var n=t.bitLength(),a=i.mont(t),s=new i(1).toRed(a);e||(e=Math.max(1,n/48|0));for(var o=t.subn(1),c=0;!o.testn(c);c++);for(var f=t.shrn(c),h=o.toRed(a);e>0;e--){var u=this._randrange(new i(2),o);r&&r(u);var d=u.toRed(a).redPow(f);if(0!==d.cmp(s)&&0!==d.cmp(h)){for(var l=1;l0;e--){var h=this._randrange(new i(2),s),u=t.gcd(h);if(0!==u.cmpn(1))return u;var d=h.toRed(n).redPow(c);if(0!==d.cmp(a)&&0!==d.cmp(f)){for(var l=1;l>8,s=255&n;a?r.push(a,s):r.push(s)}return r},i.zero2=n,i.toHex=a,i.encode=function(t,e){return"hex"===e?a(t):t}},function(t,e,r){"use strict";var i=e;i.base=r(211),i.short=r(392),i.mont=r(393),i.edwards=r(394)},function(t,e,r){"use strict";var i=r(191).rotr32;function n(t,e,r){return t&e^~t&r}function a(t,e,r){return t&e^t&r^e&r}function s(t,e,r){return t^e^r}e.ft_1=function(t,e,r,i){return 0===t?n(e,r,i):1===t||3===t?s(e,r,i):2===t?a(e,r,i):void 0},e.ch32=n,e.maj32=a,e.p32=s,e.s0_256=function(t){return i(t,2)^i(t,13)^i(t,22)},e.s1_256=function(t){return i(t,6)^i(t,11)^i(t,25)},e.g0_256=function(t){return i(t,7)^i(t,18)^t>>>3},e.g1_256=function(t){return i(t,17)^i(t,19)^t>>>10}},function(t,e,r){"use strict";var i=r(191),n=r(204),a=r(272),s=r(187),o=i.sum32,c=i.sum32_4,f=i.sum32_5,h=a.ch32,u=a.maj32,d=a.s0_256,l=a.s1_256,p=a.g0_256,b=a.g1_256,g=n.BlockHash,m=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function v(){if(!(this instanceof v))return new v;g.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=m,this.W=new Array(64)}i.inherits(v,g),t.exports=v,v.blockSize=512,v.outSize=256,v.hmacStrength=192,v.padLength=64,v.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i=31)return i.error("Multi-octet tag encoding unsupported");e||(n|=32);return n|=s.tagClassByName[r||"universal"]<<6,n}(t,e,r,this.reporter);if(i.length<128){const t=n.alloc(2);return t[0]=a,t[1]=i.length,this._createEncoderBuffer([t,i])}let o=1;for(let t=i.length;t>=256;t>>=8)o++;const c=n.alloc(2+o);c[0]=a,c[1]=128|o;for(let t=1+o,e=i.length;e>0;t--,e>>=8)c[t]=255&e;return this._createEncoderBuffer([c,i])},c.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){const e=n.alloc(2*t.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}let i=0;for(let e=0;e=128;r>>=7)i++}const a=n.alloc(i);let s=a.length-1;for(let e=t.length-1;e>=0;e--){let r=t[e];for(a[s--]=127&r;(r>>=7)>0;)a[s--]=128|127&r}return this._createEncoderBuffer(a)},c.prototype._encodeTime=function(t,e){let r;const i=new Date(t);return"gentime"===e?r=[f(i.getUTCFullYear()),f(i.getUTCMonth()+1),f(i.getUTCDate()),f(i.getUTCHours()),f(i.getUTCMinutes()),f(i.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[f(i.getUTCFullYear()%100),f(i.getUTCMonth()+1),f(i.getUTCDate()),f(i.getUTCHours()),f(i.getUTCMinutes()),f(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!n.isBuffer(t)){const e=t.toArray();!t.sign&&128&e[0]&&e.unshift(0),t=n.from(e)}if(n.isBuffer(t)){let e=t.length;0===t.length&&e++;const r=n.alloc(e);return t.copy(r),0===t.length&&(r[0]=0),this._createEncoderBuffer(r)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let r=1;for(let e=t;e>=256;e>>=8)r++;const i=new Array(r);for(let e=i.length-1;e>=0;e--)i[e]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},c.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},c.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},c.prototype._skipDefault=function(t,e,r){const i=this._baseState;let n;if(null===i.default)return!1;const a=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),a.length!==i.defaultBuffer.length)return!1;for(n=0;n>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=t.readUInt8(e),t.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:o.tag[r]}}function u(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return t.error("length octect is too long");i=0;for(let e=0;ee?t("i",{class:["iconfont",e]}):null,u=(t,{icon:e="",text:r,link:i,level:n,active:a})=>t("RouterLink",{props:{to:i,activeClass:"",exactActiveClass:""},class:{active:a,"sidebar-link":!0,[n?"heading"+n:""]:n&&2!==n}},[h(t,e),r]),d=(t,{children:e,path:r,route:i,maxDepth:n,depth:s=1})=>!e||s>n?null:t("ul",{class:"sidebar-sub-headers"},e.map(e=>{const o=Object(a.e)(i,`${r}#${e.slug}`);return t("li",{class:"sidebar-sub-header"},[u(t,{text:e.title,link:`${r}#${e.slug}`,level:e.level,active:o}),d(t,{children:e.children||!1,path:r,route:i,maxDepth:n,depth:s+1})])}));var l=i.a.extend({name:"SidebarLink",functional:!0,props:{item:{type:Object,required:!0}},render(t,{parent:{$page:e,$route:r,$themeConfig:i,$themeLocaleConfig:n},props:s}){const{item:o}=s;if("error"===o.type)return null;if("external"===o.type)return((t,{path:e,title:r=e})=>t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[r,t("OutboundLink")]))(t,o);const c=Object(a.e)(r,o.path),h="header"===o.type?c||(o.children||[]).some(t=>Object(a.e)(r,`${o.basePath}#${t.slug}`)):c,l=e.frontmatter.sidebarDepth||n.sidebarDepth||i.sidebarDepth||2;if("header"===o.type)return[u(t,{text:o.title||o.path,link:o.path,level:o.level,active:h}),d(t,{children:o.children||!1,path:o.basePath,route:r,maxDepth:l})];const p=n.displayAllHeaders||i.displayAllHeaders,b=u(t,{icon:!1!==i.sidebarIcon&&o.frontmatter.icon?`${""===i.iconPrefix?"":i.iconPrefix||"icon-"}${o.frontmatter.icon}`:"",text:o.title||o.path,link:o.path,active:h});if((h||p)&&o.headers&&!a.d.test(o.path)){const e=Object(f.b)(o.headers);return[b,d(t,{children:e,path:o.path,route:r,maxDepth:l})]}return b}}),p=(r(457),Object(o.a)(l,void 0,void 0,!1,null,null,null).exports);const b=(t,e)=>"group"===e.type&&e.children.some(e=>"group"===e.type?b(t,e):"page"===e.type&&Object(a.e)(t,e.path));var g=i.a.extend({name:"SidebarLinks",components:{SidebarGroup:c,SidebarLink:p},props:{items:{type:Array,required:!0},depth:{type:Number,required:!0}},data:()=>({openGroupIndex:0}),watch:{$route(){this.refreshIndex()}},created(){this.refreshIndex()},methods:{refreshIndex(){const t=((t,e)=>{for(let r=0;r-1&&(this.openGroupIndex=t)},toggleGroup(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive(t){return Object(a.e)(this.$route,t.regularPath)}}}),m=Object(o.a)(g,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.items.length?r("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(e,i){return r("li",{key:i},["group"===e.type?r("SidebarGroup",{attrs:{item:e,open:i===t.openGroupIndex,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(i)}}}):r("SidebarLink",{attrs:{item:e}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=m.exports},function(t,e,r){"use strict";var i=r(0),n=r(186),a=r(198),s=i.a.extend({name:"CategoryList",methods:{capitalize:n.a,clickCategory(t){Object(a.a)(t,this.$router,this.$route)}}}),o=(r(445),r(1)),c=Object(o.a)(s,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",{staticClass:"category-list-wrapper"},t._l(t.$category.list,(function(e,i){var n;return r("li",{key:e.path,staticClass:"category",class:(n={active:e.path===t.$route.path},n["category"+i%9]=!0,n),on:{click:function(r){return t.clickCategory(e.path)}}},[t._v("\n "+t._s(t.capitalize(e.name))+"\n "),r("span",{staticClass:"category-num"},[t._v(t._s(e.pages.length))])])})),0)}),[],!1,null,null,null);e.a=c.exports},function(t,e,r){"use strict";var i=r(0),n=r(186),a=r(198),s=i.a.extend({name:"TagList",computed:{tagList(){return[{name:this.$themeLocaleConfig.blog.allText||Object(n.b)().blog.allText,path:"/tag/"},...this.$tag.list]}},methods:{isActive(t){return t===(this.$currentTag&&this.$currentTag.key||this.$themeLocaleConfig.blog.allText||Object(n.b)().blog.allText)},clickTag(t){Object(a.a)(t,this.$router,this.$route)}}}),o=(r(446),r(1)),c=Object(o.a)(s,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ul",{staticClass:"tag-list-wrapper"},t._l(t.tagList,(function(e,i){var n;return r("li",{key:e.path,staticClass:"tag",class:(n={active:t.isActive(e.name)},n["tag"+i%9]=!0,n),on:{click:function(r){return t.clickTag(e.path)}}},[r("div",{staticClass:"tag-name"},[t._v(t._s(e.name))])])})),0)}),[],!1,null,null,null);e.a=c.exports},function(t,e,r){"use strict";var i=r(345),n=r(189),a=r(238),s=r(186),o=a.a.extend({name:"Timeline",components:{Anchor:i.a,MyTransition:n.a},computed:{hint(){return this.$themeConfig.blog&&this.$themeConfig.blog.timeline||this.$themeLocaleConfig.blog.timelineText||Object(s.b)().blog.timelineText},anchorConfig(){return this.$timeline.map(t=>({title:t.year.toString(),level:2,slug:t.year.toString()}))}},methods:{navigate(t){this.$router.push(t)}}}),c=(r(448),r(1)),f=Object(c.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"timeline-wrapper"},[r("ul",{staticClass:"timeline-content"},[r("MyTransition",[r("li",{staticClass:"desc"},[t._v(t._s(t.hint))])]),t._v(" "),r("Anchor",{attrs:{items:t.anchorConfig}}),t._v(" "),t._l(t.$timeline,(function(e,i){return r("MyTransition",{key:i,attrs:{delay:.08*(i+1)}},[r("li",[r("h3",{staticClass:"year",attrs:{id:e.year}},[r("span",[t._v(t._s(e.year))])]),t._v(" "),r("ul",{staticClass:"year-wrapper"},t._l(e.articles,(function(e,i){return r("li",{key:i},[r("span",{staticClass:"date"},[t._v(t._s(e.frontmatter.parsedDate))]),t._v(" "),r("span",{staticClass:"title",on:{click:function(r){return t.navigate(e.path)}}},[t._v("\n "+t._s(e.title)+"\n ")])])})),0)])])}))],2)])}),[],!1,null,null,null);e.a=f.exports},function(t,e,r){"use strict";var i=r(189),n=r(349),a=r(238),s=r(186),o=a.a.extend({name:"TimelineList",components:{MyTransition:i.a,TimeIcon:n.a},computed:{hint(){return this.$themeLocaleConfig.blog.timeline||Object(s.b)().blog.timeline}},methods:{navigate(t){this.$router.push(t)}}}),c=(r(449),r(1)),f=Object(c.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"timeline-list-wrapper"},[r("div",{staticClass:"title",on:{click:function(e){return t.navigate("/timeline/")}}},[r("TimeIcon"),t._v(" "),r("span",{staticClass:"num"},[t._v(t._s(t.$timelineItems.length))]),t._v("\n "+t._s(t.hint)+"\n ")],1),t._v(" "),r("hr"),t._v(" "),r("div",{staticClass:"content"},[r("ul",{staticClass:"timeline-list"},t._l(t.$timeline,(function(e,i){return r("MyTransition",{key:i,attrs:{delay:.08*(i+1)}},[r("li",[r("h3",{staticClass:"year"},[t._v(t._s(e.year))]),t._v(" "),r("ul",{staticClass:"year-wrapper"},t._l(e.articles,(function(e,i){return r("li",{key:i},[r("span",{staticClass:"date"},[t._v(t._s(e.frontmatter.parsedDate))]),t._v(" "),r("span",{staticClass:"timeline-title",on:{click:function(r){return t.navigate(e.path)}}},[t._v("\n "+t._s(e.title)+"\n ")])])})),0)])])})),1)])])}),[],!1,null,null,null);e.a=f.exports},function(t,e,r){"use strict";var i=r(186),n=r(334),a=r(238),s=r(206),o=r(198),c=a.a.extend({name:"BloggerInfo",components:{MediaLinks:n.a},computed:{blogConfig(){return this.$themeConfig.blog||{}},bloggerName(){return this.blogConfig.name||this.$themeConfig.author||this.$site.title||""},bloggerAvatar(){return this.blogConfig.avatar||this.$themeConfig.logo||""},hasIntro(){return Boolean(this.blogConfig.intro)},hintAttr(){return this.hasIntro?"aria-label":""},i18n(){return this.$themeLocaleConfig.blog||Object(i.b)().blog},articleNumber(){return Object(s.a)(this.$site.pages).length}},methods:{navigate(t){Object(o.a)(t,this.$router,this.$route)},jumpIntro(){this.hasIntro&&Object(o.a)(this.blogConfig.intro,this.$router,this.$route)}}}),f=(r(451),r(1)),h=Object(f.a)(c,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"blogger-info",attrs:{vocab:"https://schema.org/",typeof:"Person"}},[r("div",t._b({staticClass:"blogger",class:{hasIntro:t.hasIntro},attrs:{"data-balloon-pos":t.hasIntro?"down":"",role:"navigation"},on:{click:t.jumpIntro}},"div",t._d({},[t.hintAttr,t.hasIntro?t.i18n.intro:""])),[t.bloggerAvatar?r("img",{staticClass:"avatar",class:{round:!1!==t.blogConfig.roundAvatar},attrs:{property:"image",alt:"Blogger Avatar",src:t.$withBase(t.bloggerAvatar)}}):t._e(),t._v(" "),t.bloggerName?r("div",{staticClass:"name",attrs:{property:"name"},domProps:{textContent:t._s(t.bloggerName)}}):t._e(),t._v(" "),t.hasIntro?r("meta",{attrs:{property:"url",content:t.$withBase(t.blogConfig.intro)}}):t._e()]),t._v(" "),r("div",{staticClass:"num-wrapper"},[r("div",{on:{click:function(e){return t.navigate("/article/")}}},[r("div",{staticClass:"num"},[t._v(t._s(t.articleNumber))]),t._v(" "),r("div",[t._v(t._s(t.i18n.article))])]),t._v(" "),r("div",{on:{click:function(e){return t.navigate("/category/")}}},[r("div",{staticClass:"num"},[t._v(t._s(t.$category.list.length))]),t._v(" "),r("div",[t._v(t._s(t.i18n.category))])]),t._v(" "),r("div",{on:{click:function(e){return t.navigate("/tag/")}}},[r("div",{staticClass:"num"},[t._v(t._s(t.$tag.list.length))]),t._v(" "),r("div",[t._v(t._s(t.i18n.tag))])]),t._v(" "),r("div",{on:{click:function(e){return t.navigate("/timeline/")}}},[r("div",{staticClass:"num"},[t._v(t._s(t.$timelineItems.length))]),t._v(" "),r("div",[t._v(t._s(t.i18n.timeline))])])]),t._v(" "),r("MediaLinks")],1)}),[],!1,null,null,null);e.a=h.exports},function(t,e,r){"use strict";var i=r(0),n=r(347),a=r(186),s=r(194),o=i.a.extend({name:"CategoryInfo",components:{CategoryIcon:n.a},props:{category:{type:String,default:""}},computed:{categoryName(){if(this.category)return Object(a.a)(this.category);const{category:t}=this.$frontmatter;return t?Object(a.a)(t):""},canUse(){return!1!==this.$themeConfig.blog},hint(){return s.b[this.$localePath||"/"].category}},methods:{navigate(){const t=`/category/${this.categoryName}/`;this.canUse&&this.$route.path!==t&&this.$router.push(t)}}}),c=(r(437),r(1)),f=Object(c.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.categoryName?r("span",{staticClass:"category-info",class:{enable:t.canUse},attrs:{role:t.canUse?"navigation":"","aria-label":t.hint,"data-balloon-pos":"down"},on:{click:t.navigate}},[r("CategoryIcon"),t._v(" "),r("span",{attrs:{property:"articleSection"},domProps:{textContent:t._s(t.categoryName)}})],1):t._e()}),[],!1,null,null,null);e.a=f.exports},function(t,e,r){"use strict";var i=r(0),n=r(348),a=r(186),s=r(194),o=i.a.extend({name:"TagInfo",components:{TagIcon:n.a},props:{tags:{type:Array,default:()=>[]}},computed:{$tags(){if(0!==this.tags.length)return this.tags;const{tags:t,tag:e=t}=this.$frontmatter;return"string"==typeof e?[Object(a.a)(e)]:Array.isArray(e)?e.map(t=>Object(a.a)(t)):[]},clickable(){return!1!==this.$themeConfig.blog},hint(){return s.b[this.$localePath||"/"].tag}},methods:{navigate(t){const e=`/tag/${t}/`;this.$route.path!==e&&this.$router.push(e)}}}),c=(r(438),r(1)),f=Object(c.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return 0!==t.$tags.length?r("span",{attrs:{"aria-label":t.hint,"data-balloon-pos":"down"}},[r("TagIcon"),t._v(" "),r("ul",{staticClass:"tags-wrapper"},t._l(t.$tags,(function(e,i){var n;return r("li",{key:e,staticClass:"tag",class:(n={clickable:t.clickable},n["tag"+i%9]=!0,n),on:{click:function(r){return t.navigate(e)}}},[r("span",{attrs:{role:t.clickable?"navigation":""},domProps:{textContent:t._s(e)}})])})),0),t._v(" "),r("meta",{attrs:{property:"keywords",content:t.$tags.join(",")}})],1):t._e()}),[],!1,null,null,null);e.a=f.exports},function(t,e,r){"use strict";var i=r(0).a.extend({name:"DropdownTransition",methods:{setHeight(t){t.style.height=t.scrollHeight+"px"},unsetHeight(t){t.style.height=""}}}),n=(r(453),r(1)),a=Object(n.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=a.exports},function(t,e,r){"use strict";var i=r(0),n=r(192);const a=(t,{text:e,link:r,level:i})=>t("RouterLink",{props:{to:r,activeClass:"",exactActiveClass:""},class:{"anchor-link":!0,[i?"heading"+i:""]:i}},[t("div",{},[e])]),s=(t,{children:e,route:r})=>t("ul",{class:"anchor-list"},e.map(e=>{const i=Object(n.e)(r,`${r.path}#${e.slug}`);return t("li",{class:{anchor:!0,active:i}},[a(t,{text:e.title,link:`${r.path}#${e.slug}`,level:e.level})])}));var o=i.a.extend({name:"Anchor",functional:!0,props:{items:{type:Array,default:()=>[]}},render:(t,{props:e,parent:{$page:r,$route:i}})=>t("div",{attrs:{class:"anchor-place-holder"}},[t("aside",{attrs:{id:"anchor"}},[t("div",{class:"anchor-wrapper"},[e.items.length?s(t,{children:e.items,route:i}):r.headers?s(t,{children:r.headers,route:i}):null])])])}),c=(r(447),r(1)),f=Object(c.a)(o,void 0,void 0,!1,null,null,null);e.a=f.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon article-icon",attrs:{viewBox:"0 0 1024 1024"}},[e("path",{attrs:{d:"M853.333 938.667H170.667A42.667 42.667 0 0 1 128 896V128a42.667 42.667 0 0 1 42.667-42.667h682.666A42.667 42.667 0 0 1 896 128v768a42.667 42.667 0 0 1-42.667 42.667zm-42.666-85.334V170.667H213.333v682.666h597.334zM298.667 256h170.666v170.667H298.667V256zm0 256h426.666v85.333H298.667V512zm0 170.667h426.666V768H298.667v-85.333zm256-384h170.666V384H554.667v-85.333z",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon category-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zm-.854 446.486H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zm446.371-446.486h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zm136.293 813.51H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon tag-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M939.902 458.563 910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 0 0 0 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon time-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M511.997 70.568c-243.797 0-441.429 197.633-441.429 441.435 0 243.797 197.632 441.429 441.43 441.429S953.431 755.8 953.431 512.002c0-243.796-197.637-441.434-441.435-441.434zm150.158 609.093-15.605 15.61c-8.621 8.615-22.596 8.615-31.215 0L472.197 552.126c-4.95-4.944-4.34-14.888-4.34-24.677V247.14c0-12.19 9.882-22.07 22.07-22.07h22.07c12.19 0 22.07 9.882 22.07 22.07v273.218l128.088 128.088c8.62 8.62 8.62 22.595 0 31.215zm0 0",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon author-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon calendar-icon",attrs:{viewBox:"0 0 1030 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 0 1-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 0 1-33.473-33.473V143.657H180.6A134.314 134.314 0 0 0 46.66 277.595v535.756A134.314 134.314 0 0 0 180.6 947.289h669.74a134.36 134.36 0 0 0 133.94-133.938V277.595a134.314 134.314 0 0 0-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 0 1-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 0 1-33.472 33.473z",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";var i=r(1),n=Object(i.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon timer-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z",fill:"currentColor"}})])}),[],!1,null,null,null);e.a=n.exports},function(t,e,r){"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=r(196),e.createHash=e.Hash=r(200),e.createHmac=e.Hmac=r(253);var i=r(369),n=Object.keys(i),a=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return a};var s=r(256);e.pbkdf2=s.pbkdf2,e.pbkdf2Sync=s.pbkdf2Sync;var o=r(371);e.Cipher=o.Cipher,e.createCipher=o.createCipher,e.Cipheriv=o.Cipheriv,e.createCipheriv=o.createCipheriv,e.Decipher=o.Decipher,e.createDecipher=o.createDecipher,e.Decipheriv=o.Decipheriv,e.createDecipheriv=o.createDecipheriv,e.getCiphers=o.getCiphers,e.listCiphers=o.listCiphers;var c=r(386);e.DiffieHellmanGroup=c.DiffieHellmanGroup,e.createDiffieHellmanGroup=c.createDiffieHellmanGroup,e.getDiffieHellman=c.getDiffieHellman,e.createDiffieHellman=c.createDiffieHellman,e.DiffieHellman=c.DiffieHellman;var f=r(389);e.createSign=f.createSign,e.Sign=f.Sign,e.createVerify=f.createVerify,e.Verify=f.Verify,e.createECDH=r(419);var h=r(420);e.publicEncrypt=h.publicEncrypt,e.privateEncrypt=h.privateEncrypt,e.publicDecrypt=h.publicDecrypt,e.privateDecrypt=h.privateDecrypt;var u=r(423);e.randomFill=u.randomFill,e.randomFillSync=u.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},function(t,e,r){"use strict";e.byteLength=function(t){var e=f(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,i=f(t),s=i[0],o=i[1],c=new a(function(t,e,r){return 3*(e+r)/4-r}(0,s,o)),h=0,u=o>0?s-4:s;for(r=0;r>16&255,c[h++]=e>>8&255,c[h++]=255&e;2===o&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,c[h++]=255&e);1===o&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,c[h++]=e>>8&255,c[h++]=255&e);return c},e.fromByteArray=function(t){for(var e,r=t.length,n=r%3,a=[],s=0,o=r-n;so?o:s+16383));1===n?(e=t[r-1],a.push(i[e>>2]+i[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],a.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+"="));return a.join("")};for(var i=[],n=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,c=s.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function h(t,e,r){for(var n,a,s=[],o=e;o>18&63]+i[a>>12&63]+i[a>>6&63]+i[63&a]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},function(t,e){ -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ -e.read=function(t,e,r,i,n){var a,s,o=8*n-i-1,c=(1<>1,h=-7,u=r?n-1:0,d=r?-1:1,l=t[e+u];for(u+=d,a=l&(1<<-h)-1,l>>=-h,h+=o;h>0;a=256*a+t[e+u],u+=d,h-=8);for(s=a&(1<<-h)-1,a>>=-h,h+=i;h>0;s=256*s+t[e+u],u+=d,h-=8);if(0===a)a=1-f;else{if(a===c)return s?NaN:1/0*(l?-1:1);s+=Math.pow(2,i),a-=f}return(l?-1:1)*s*Math.pow(2,a-i)},e.write=function(t,e,r,i,n,a){var s,o,c,f=8*a-n-1,h=(1<>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,l=i?0:a-1,p=i?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-s))<1&&(s--,c*=2),(e+=s+u>=1?d/c:d*Math.pow(2,1-u))*c>=2&&(s++,c/=2),s+u>=h?(o=0,s=h):s+u>=1?(o=(e*c-1)*Math.pow(2,n),s+=u):(o=e*Math.pow(2,u-1)*Math.pow(2,n),s=0));n>=8;t[r+l]=255&o,l+=p,o/=256,n-=8);for(s=s<0;t[r+l]=255&s,l+=p,s/=256,f-=8);t[r+l-p]|=128*b}},function(t,e,r){"use strict";var i=r(183).Buffer,n=r(218);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e,r,n,a=i.allocUnsafe(t>>>0),s=this.head,o=0;s;)e=s.data,r=a,n=o,e.copy(r,n),o+=s.data.length,s=s.next;return a},t}(),n&&n.inspect&&n.inspect.custom&&(t.exports.prototype[n.inspect.custom]=function(){var t=n.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){function r(t){try{if(!global.localStorage)return!1}catch(t){return!1}var e=global.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(r("noDeprecation"))return t;var i=!1;return function(){if(!i){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}}},function(t,e,r){"use strict";t.exports=a;var i=r(250),n=Object.create(r(202));function a(t){if(!(this instanceof a))return new a(t);i.call(this,t)}n.inherits=r(184),n.inherits(a,i),a.prototype._transform=function(t,e,r){r(null,t)}},function(t,e,r){var i=r(184),n=r(197),a=r(183).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],o=new Array(80);function c(){this.init(),this._w=o,n.call(this,64,56)}function f(t){return t<<30|t>>>2}function h(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(c,n),c.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},c.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,o=0|this._d,c=0|this._e,u=0;u<16;++u)r[u]=t.readInt32BE(4*u);for(;u<80;++u)r[u]=r[u-3]^r[u-8]^r[u-14]^r[u-16];for(var d=0;d<80;++d){var l=~~(d/20),p=0|((e=i)<<5|e>>>27)+h(l,n,a,o)+c+r[d]+s[l];c=o,o=a,a=f(n),n=i,i=p}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=o+this._d|0,this._e=c+this._e|0},c.prototype._hash=function(){var t=a.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=c},function(t,e,r){var i=r(184),n=r(197),a=r(183).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],o=new Array(80);function c(){this.init(),this._w=o,n.call(this,64,56)}function f(t){return t<<5|t>>>27}function h(t){return t<<30|t>>>2}function u(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(c,n),c.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},c.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,a=0|this._c,o=0|this._d,c=0|this._e,d=0;d<16;++d)r[d]=t.readInt32BE(4*d);for(;d<80;++d)r[d]=(e=r[d-3]^r[d-8]^r[d-14]^r[d-16])<<1|e>>>31;for(var l=0;l<80;++l){var p=~~(l/20),b=f(i)+u(p,n,a,o)+c+r[l]+s[p]|0;c=o,o=a,a=h(n),n=i,i=b}this._a=i+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=o+this._d|0,this._e=c+this._e|0},c.prototype._hash=function(){var t=a.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=c},function(t,e,r){var i=r(184),n=r(251),a=r(197),s=r(183).Buffer,o=new Array(64);function c(){this.init(),this._w=o,a.call(this,64,56)}i(c,n),c.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},c.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=c},function(t,e,r){var i=r(184),n=r(252),a=r(197),s=r(183).Buffer,o=new Array(160);function c(){this.init(),this._w=o,a.call(this,128,112)}i(c,n),c.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},c.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=c},function(t,e,r){t.exports=n;var i=r(216).EventEmitter;function n(){i.call(this)}r(184)(n,i),n.Readable=r(201),n.Writable=r(364),n.Duplex=r(365),n.Transform=r(366),n.PassThrough=r(367),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function a(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",a),t._isStdio||e&&!1===e.end||(r.on("end",o),r.on("close",c));var s=!1;function o(){s||(s=!0,t.end())}function c(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function f(t){if(h(),0===i.listenerCount(this,"error"))throw t}function h(){r.removeListener("data",n),t.removeListener("drain",a),r.removeListener("end",o),r.removeListener("close",c),r.removeListener("error",f),t.removeListener("error",f),r.removeListener("end",h),r.removeListener("close",h),t.removeListener("close",h)}return r.on("error",f),t.on("error",f),r.on("end",h),r.on("close",h),t.on("close",h),t.emit("pipe",r),t}},function(t,e,r){t.exports=r(219)},function(t,e,r){t.exports=r(195)},function(t,e,r){t.exports=r(201).Transform},function(t,e,r){t.exports=r(201).PassThrough},function(t,e,r){"use strict";var i=r(184),n=r(183).Buffer,a=r(193),s=n.alloc(128);function o(t,e){a.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>64?e=t(e):e.length<64&&(e=n.concat([e,s],64));for(var r=this._ipad=n.allocUnsafe(64),i=this._opad=n.allocUnsafe(64),o=0;o<64;o++)r[o]=54^e[o],i[o]=92^e[o];this._hash=[r]}i(o,a),o.prototype._update=function(t){this._hash.push(t)},o.prototype._final=function(){var t=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,t]))},t.exports=o},function(t,e,r){t.exports=r(255)},function(t,e,r){var i,n=r(183).Buffer,a=r(257),s=r(258),o=r(259),c=r(260),f=global.crypto&&global.crypto.subtle,h={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},u=[];function d(t,e,r,i,a){return f.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return f.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:a}},t,i<<3)})).then((function(t){return n.from(t)}))}t.exports=function(t,e,r,l,p,b){"function"==typeof p&&(b=p,p=void 0);var g=h[(p=p||"sha1").toLowerCase()];if(!g||"function"!=typeof global.Promise)return process.nextTick((function(){var i;try{i=o(t,e,r,l,p)}catch(t){return b(t)}b(null,i)}));if(a(r,l),t=c(t,s,"Password"),e=c(e,s,"Salt"),"function"!=typeof b)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){process.nextTick((function(){e(null,t)}))}),(function(t){process.nextTick((function(){e(t)}))}))}(function(t){if(global.process&&!global.process.browser)return Promise.resolve(!1);if(!f||!f.importKey||!f.deriveBits)return Promise.resolve(!1);if(void 0!==u[t])return u[t];var e=d(i=i||n.alloc(8),i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return u[t]=e,e}(g).then((function(i){return i?d(t,e,r,l,g):o(t,e,r,l,p)})),b)}},function(t,e,r){var i=r(372),n=r(224),a=r(225),s=r(385),o=r(210);function c(t,e,r){if(t=t.toLowerCase(),a[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function f(t,e,r){if(t=t.toLowerCase(),a[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),a[t])r=a[t].key,i=a[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=o(e,!1,r,i);return c(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=c,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),a[t])r=a[t].key,i=a[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=o(e,!1,r,i);return f(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=f,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},function(t,e,r){var i=r(193),n=r(373),a=r(184),s=r(183).Buffer,o={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function c(t){i.call(this);var e,r=t.mode.toLowerCase(),n=o[r];e=t.decrypt?"decrypt":"encrypt";var a=t.key;s.isBuffer(a)||(a=s.from(a)),"des-ede"!==r&&"des-ede-cbc"!==r||(a=s.concat([a,a.slice(0,8)]));var c=t.iv;s.isBuffer(c)||(c=s.from(c)),this._des=n.create({key:a,iv:c,type:e})}o.des=o["des-cbc"],o.des3=o["des-ede3-cbc"],t.exports=c,a(c,i),c.prototype._update=function(t){return s.from(this._des.update(t))},c.prototype._final=function(){return s.from(this._des.final())}},function(t,e,r){"use strict";e.utils=r(261),e.Cipher=r(223),e.DES=r(262),e.CBC=r(374),e.EDE=r(375)},function(t,e,r){"use strict";var i=r(187),n=r(184),a={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},d.prototype.flush=function(){for(var t=16-this.cache.length,e=a.allocUnsafe(t),r=-1;++r>s%8,t._prev=a(t._prev,r?i:n);return o}function a(t,e){var r=t.length,n=-1,a=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return a}e.encrypt=function(t,e,r){for(var a=e.length,s=i.allocUnsafe(a),o=-1;++o>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=a(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(a([0,t,0,e])),this.state},t.exports=s},function(t,e,r){var i=r(266),n=r(183).Buffer,a=r(225),s=r(267),o=r(193),c=r(209),f=r(210);function h(t,e,r){o.call(this),this._cache=new u,this._last=void 0,this._cipher=new c.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function u(){this.cache=n.allocUnsafe(0)}function d(t,e,r){var o=a[t.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==o.mode&&r.length!==o.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==o.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===o.type?new s(o.module,e,r,!0):"auth"===o.type?new i(o.module,e,r,!0):new h(o.module,e,r)}r(184)(h,o),h.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},h.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");var r=-1;for(;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},u.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=a[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=f(e,!1,r.key,r.iv);return d(t,i.key,i.iv)},e.createDecipheriv=d},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,r){(function(t){var i=r(268),n=r(387),a=r(388);var s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(e){var r=new t(n[e].prime,"hex"),i=new t(n[e].gen,"hex");return new a(r,i)},e.createDiffieHellman=e.DiffieHellman=function e(r,n,o,c){return t.isBuffer(n)||void 0===s[n]?e(r,"binary",n,o):(n=n||"binary",c=c||"binary",o=o||new t([2]),t.isBuffer(o)||(o=new t(o,c)),"number"==typeof r?new a(i(r,o),o,!0):(t.isBuffer(r)||(r=new t(r,n)),new a(r,o,!0)))}}).call(this,r(190).Buffer)},function(t){t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(t,e,r){(function(e){var i=r(185),n=new(r(269)),a=new i(24),s=new i(11),o=new i(10),c=new i(3),f=new i(7),h=r(268),u=r(196);function d(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._pub=new i(t),this}function l(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._priv=new i(t),this}t.exports=b;var p={};function b(t,e,r){this.setGenerator(e),this.__prime=new i(t),this._prime=i.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=d,this.setPrivateKey=l):this._primeCode=8}function g(t,r){var i=new e(t.toArray());return r?i.toString(r):i}Object.defineProperty(b.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in p)return p[i];var u,d=0;if(t.isEven()||!h.simpleSieve||!h.fermatTest(t)||!n.test(t))return d+=1,d+="02"===r||"05"===r?8:4,p[i]=d,d;switch(n.test(t.shrn(1))||(d+=2),r){case"02":t.mod(a).cmp(s)&&(d+=8);break;case"05":(u=t.mod(o)).cmp(c)&&u.cmp(f)&&(d+=8);break;default:d+=4}return p[i]=d,d}(this.__prime,this.__gen)),this._primeCode}}),b.prototype.generateKeys=function(){return this._priv||(this._priv=new i(u(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},b.prototype.computeSecret=function(t){var r=(t=(t=new i(t)).toRed(this._prime)).redPow(this._priv).fromRed(),n=new e(r.toArray()),a=this.getPrime();if(n.length0&&r.ishrn(i),r}function d(t,e,r){var a,s;do{for(a=i.alloc(0);8*a.length=0&&(s=e,o=r),i.negative&&(i=i.neg(),a=a.neg()),s.negative&&(s=s.neg(),o=o.neg()),[{a:i,b:a},{a:s,b:o}]},c.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),a=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),o=a.mul(i.a),c=n.mul(r.b),f=a.mul(i.b);return{k1:t.sub(s).sub(o),k2:c.add(f).neg()}},c.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var a=i.fromRed().isOdd();return(e&&!a||!e&&a)&&(i=i.redNeg()),this.point(t,i)},c.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},c.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,a=0;a":""},f.prototype.isInfinity=function(){return this.inf},f.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},f.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),a=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,s)},f.prototype.getX=function(){return this.x.fromRed()},f.prototype.getY=function(){return this.y.fromRed()},f.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},f.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},f.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},f.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},f.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},f.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},a(h,s.BasePoint),c.prototype.jpoint=function(t,e,r){return new h(this,t,e,r)},h.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},h.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},h.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),a=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),o=i.redSub(n),c=a.redSub(s);if(0===o.cmpn(0))return 0!==c.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var f=o.redSqr(),h=f.redMul(o),u=i.redMul(f),d=c.redSqr().redIAdd(h).redISub(u).redISub(u),l=c.redMul(u.redISub(d)).redISub(a.redMul(h)),p=this.z.redMul(t.z).redMul(o);return this.curve.jpoint(d,l,p)},h.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,a=t.y.redMul(e).redMul(this.z),s=r.redSub(i),o=n.redSub(a);if(0===s.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),f=c.redMul(s),h=r.redMul(c),u=o.redSqr().redIAdd(f).redISub(h).redISub(h),d=o.redMul(h.redISub(u)).redISub(n.redMul(f)),l=this.z.redMul(s);return this.curve.jpoint(u,d,l)},h.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";var i=r(185),n=r(184),a=r(211),s=r(188);function o(t){a.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function c(t,e,r){a.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(o,a),t.exports=o,o.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(c,a.BasePoint),o.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},o.prototype.point=function(t,e){return new c(this,t,e)},o.prototype.pointFromJSON=function(t){return c.fromJSON(this,t)},c.prototype.precompute=function(){},c.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},c.fromJSON=function(t,e){return new c(t,e[0],e[1]||t.one)},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},c.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},c.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},c.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),a=t.x.redSub(t.z).redMul(r),s=n.redMul(i),o=e.z.redMul(a.redAdd(s).redSqr()),c=e.x.redMul(a.redISub(s).redSqr());return this.curve.point(o,c)},c.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var a=n.length-1;a>=0;a--)0===n[a]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},c.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},c.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},c.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},c.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";var i=r(188),n=r(185),a=r(184),s=r(211),o=i.assert;function c(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),o(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function f(t,e,r,i,a){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=a&&new n(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}a(c,s),t.exports=c,c.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},c.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},c.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},c.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),a=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(a.redInvm()),o=s.redSqrt();if(0!==o.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var c=o.fromRed().isOdd();return(e&&!c||!e&&c)&&(o=o.redNeg()),this.point(t,o)},c.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),a=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(a.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var o=s.redSqrt();if(0!==o.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return o.fromRed().isOdd()!==e&&(o=o.redNeg()),this.point(o,t)},c.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},a(f,s.BasePoint),c.prototype.pointFromJSON=function(t){return f.fromJSON(this,t)},c.prototype.point=function(t,e,r,i){return new f(this,t,e,r,i)},f.fromJSON=function(t,e){return new f(t,e[0],e[1],e[2])},f.prototype.inspect=function(){return this.isInfinity()?"":""},f.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},f.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),a=i.redAdd(e),s=a.redSub(r),o=i.redSub(e),c=n.redMul(s),f=a.redMul(o),h=n.redMul(o),u=s.redMul(a);return this.curve.point(c,f,u,h)},f.prototype._projDbl=function(){var t,e,r,i,n,a,s=this.x.redAdd(this.y).redSqr(),o=this.x.redSqr(),c=this.y.redSqr();if(this.curve.twisted){var f=(i=this.curve._mulA(o)).redAdd(c);this.zOne?(t=s.redSub(o).redSub(c).redMul(f.redSub(this.curve.two)),e=f.redMul(i.redSub(c)),r=f.redSqr().redSub(f).redSub(f)):(n=this.z.redSqr(),a=f.redSub(n).redISub(n),t=s.redSub(o).redISub(c).redMul(a),e=f.redMul(i.redSub(c)),r=f.redMul(a))}else i=o.redAdd(c),n=this.curve._mulC(this.z).redSqr(),a=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(a),e=this.curve._mulC(i).redMul(o.redISub(c)),r=i.redMul(a);return this.curve.point(t,e,r)},f.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},f.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),a=r.redSub(e),s=n.redSub(i),o=n.redAdd(i),c=r.redAdd(e),f=a.redMul(s),h=o.redMul(c),u=a.redMul(c),d=s.redMul(o);return this.curve.point(f,h,d,u)},f.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),a=this.x.redMul(t.x),s=this.y.redMul(t.y),o=this.curve.d.redMul(a).redMul(s),c=n.redSub(o),f=n.redAdd(o),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(a).redISub(s),u=i.redMul(c).redMul(h);return this.curve.twisted?(e=i.redMul(f).redMul(s.redSub(this.curve._mulA(a))),r=c.redMul(f)):(e=i.redMul(f).redMul(s.redSub(a)),r=this.curve._mulC(c).redMul(f)),this.curve.point(u,e,r)},f.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},f.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},f.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},f.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},f.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},f.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},f.prototype.getX=function(){return this.normalize(),this.x.fromRed()},f.prototype.getY=function(){return this.normalize(),this.y.fromRed()},f.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},f.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},f.prototype.toP=f.prototype.normalize,f.prototype.mixedAdd=f.prototype.add},function(t,e,r){"use strict";e.sha1=r(396),e.sha224=r(397),e.sha256=r(273),e.sha384=r(398),e.sha512=r(274)},function(t,e,r){"use strict";var i=r(191),n=r(204),a=r(272),s=i.rotl32,o=i.sum32,c=i.sum32_5,f=a.ft_1,h=n.BlockHash,u=[1518500249,1859775393,2400959708,3395469782];function d(){if(!(this instanceof d))return new d;h.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(d,h),t.exports=d,d.blockSize=512,d.outSize=160,d.hmacStrength=80,d.padLength=64,d.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;ithis.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e0))return s.iaddn(1),this.keyFromPrivate(s)}},u.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},u.prototype.sign=function(t,e,r,a){"object"==typeof r&&(a=r,r=null),a||(a={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),o=e.getPrivate().toArray("be",s),c=t.toArray("be",s),f=new n({hash:this.hash,entropy:o,nonce:c,pers:a.pers,persEnc:a.persEnc||"utf8"}),u=this.n.sub(new i(1)),d=0;;d++){var l=a.k?a.k(d):new i(f.generate(this.n.byteLength()));if(!((l=this._truncateToN(l,!0)).cmpn(1)<=0||l.cmp(u)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),g=b.umod(this.n);if(0!==g.cmpn(0)){var m=l.invm(this.n).mul(g.mul(e.getPrivate()).iadd(t));if(0!==(m=m.umod(this.n)).cmpn(0)){var v=(p.getY().isOdd()?1:0)|(0!==b.cmp(g)?2:0);return a.canonical&&m.cmp(this.nh)>0&&(m=this.n.sub(m),v^=1),new h({r:g,s:m,recoveryParam:v})}}}}}},u.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var a=(e=new h(e,"hex")).r,s=e.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var o,c=s.invm(this.n),f=c.mul(t).umod(this.n),u=c.mul(a).umod(this.n);return this.curve._maxwellTrick?!(o=this.g.jmulAdd(f,r.getPublic(),u)).isInfinity()&&o.eqXToP(a):!(o=this.g.mulAdd(f,r.getPublic(),u)).isInfinity()&&0===o.getX().umod(this.n).cmp(a)},u.prototype.recoverPubKey=function(t,e,r,n){c((3&r)===r,"The recovery param is more than two bits"),e=new h(e,n);var a=this.n,s=new i(t),o=e.r,f=e.s,u=1&r,d=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");o=d?this.curve.pointFromX(o.add(this.curve.n),u):this.curve.pointFromX(o,u);var l=e.r.invm(a),p=a.sub(s).mul(l).umod(a),b=f.mul(l).umod(a);return this.g.mulAdd(p,o,b)},u.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new h(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(t,e,n)}catch(t){continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";var i=r(232),n=r(270),a=r(187);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");a(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var a=[];a.length"}},function(t,e,r){"use strict";var i=r(185),n=r(188),a=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(a(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function o(){this.place=0}function c(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,a=0,s=e.place;a>>=0;return!(n<=127)&&(e.place=s,n)}function f(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new o;if(48!==t[r.place++])return!1;var a=c(t,r);if(!1===a)return!1;if(a+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=c(t,r);if(!1===s)return!1;var f=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var h=c(t,r);if(!1===h)return!1;if(t.length!==h+r.place)return!1;var u=t.slice(r.place,h+r.place);if(0===f[0]){if(!(128&f[1]))return!1;f=f.slice(1)}if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}return this.r=new i(f),this.s=new i(u),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=f(e),r=f(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];h(i,e.length),(i=i.concat(e)).push(2),h(i,r.length);var a=i.concat(r),s=[48];return h(s,a.length),s=s.concat(a),n.encode(s,t)}},function(t,e,r){"use strict";var i=r(232),n=r(231),a=r(188),s=a.assert,o=a.parseBytes,c=r(407),f=r(408);function h(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof h))return new h(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=h,h.prototype.sign=function(t,e){t=o(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),a=this.encodePoint(n),s=this.hashInt(a,r.pubBytes(),t).mul(r.priv()),c=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:c,Rencoded:a})},h.prototype.verify=function(t,e,r){t=o(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),a=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(a)},h.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=e)throw new Error("invalid sig")}t.exports=function(t,e,r,f,h){var u=s(r);if("ec"===u.type){if("ecdsa"!==f&&"ecdsa/rsa"!==f)throw new Error("wrong public key type");return function(t,e,r){var i=o[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new a(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,u)}if("dsa"===u.type){if("dsa"!==f)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,a=r.data.q,o=r.data.g,f=r.data.pub_key,h=s.signature.decode(t,"der"),u=h.s,d=h.r;c(u,a),c(d,a);var l=n.mont(i),p=u.invm(a);return 0===o.toRed(l).redPow(new n(e).mul(p).mod(a)).fromRed().mul(f.toRed(l).redPow(d.mul(p).mod(a)).fromRed()).mod(i).mod(a).cmp(d)}(t,e,u)}if("rsa"!==f&&"ecdsa/rsa"!==f)throw new Error("wrong public key type");e=i.concat([h,e]);for(var d=u.modulus.byteLength(),l=[1],p=0;e.length+l.length+2r-d-2)throw new Error("message too long");var l=u.alloc(r-i-d-2),p=r-h-1,b=n(h),g=o(u.concat([f,l,u.alloc(1,1),e],p),s(b,p)),m=o(b,s(g,h));return new c(u.concat([u.alloc(1),m,g],r))}(p,e);else if(1===d)l=function(t,e,r){var i,a=e.length,s=t.modulus.byteLength();if(a>s-11)throw new Error("message too long");i=r?u.alloc(s-a-3,255):function(t){var e,r=u.allocUnsafe(t),i=0,a=n(2*t),s=0;for(;i=0)throw new Error("data too long for modulus")}return r?h(l,p):f(l,p)}},function(t,e,r){var i=r(212),n=r(281),a=r(282),s=r(185),o=r(229),c=r(200),f=r(283),h=r(183).Buffer;t.exports=function(t,e,r){var u;u=t.padding?t.padding:r?1:4;var d,l=i(t),p=l.modulus.byteLength();if(e.length>p||new s(e).cmp(l.modulus)>=0)throw new Error("decryption error");d=r?f(new s(e),l):o(e,l);var b=h.alloc(p-d.length);if(d=h.concat([b,d],p),4===u)return function(t,e){var r=t.modulus.byteLength(),i=c("sha1").update(h.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var o=e.slice(1,s+1),f=e.slice(s+1),u=a(o,n(f,s)),d=a(f,n(u,r-s-1));if(function(t,e){t=h.from(t),e=h.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));var n=-1;for(;++n=e.length){a++;break}var s=e.slice(2,n-1);("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&a++;s.length<8&&a++;if(a)throw new Error("decryption error");return e.slice(n)}(0,d,r);if(3===u)return d;throw new Error("unknown padding")}},function(t,e,r){"use strict";function i(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var n=r(183),a=r(196),s=n.Buffer,o=n.kMaxLength,c=global.crypto||global.msCrypto,f=Math.pow(2,32)-1;function h(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>f||t<0)throw new TypeError("offset must be a uint32");if(t>o||t>e)throw new RangeError("offset out of range")}function u(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>f||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>o)throw new RangeError("buffer too small")}function d(t,e,r,i){if(process.browser){var n=t.buffer,s=new Uint8Array(n,e,r);return c.getRandomValues(s),i?void process.nextTick((function(){i(null,t)})):t}if(!i)return a(r).copy(t,e),t;a(r,(function(r,n){if(r)return i(r);n.copy(t,e),i(null,t)}))}c&&c.getRandomValues||!process.browser?(e.randomFill=function(t,e,r,i){if(!(s.isBuffer(t)||t instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof e)i=e,e=0,r=t.length;else if("function"==typeof r)i=r,r=t.length-e;else if("function"!=typeof i)throw new TypeError('"cb" argument must be a function');return h(e,t.length),u(r,e,t.length),d(t,e,r,i)},e.randomFillSync=function(t,e,r){void 0===e&&(e=0);if(!(s.isBuffer(t)||t instanceof global.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');h(e,t.length),void 0===r&&(r=t.length-e);return u(r,e,t.length),d(t,e,r)}):(e.randomFill=i,e.randomFillSync=i)},function(t,e,r){"use strict";r(284)},function(t,e,r){"use strict";r(285)},function(t,e,r){"use strict";r(286)},function(t,e,r){"use strict";r(287)},function(t,e,r){"use strict";r(288)},function(t,e,r){"use strict";r(289)},,,,function(t,e,r){"use strict";r(294)},function(t,e,r){"use strict";r(295)},function(t,e,r){"use strict";r(296)},function(t,e,r){"use strict";r(297)},function(t,e,r){"use strict";r(298)},function(t,e,r){"use strict";r(299)},function(t,e,r){"use strict";r(300)},function(t,e,r){"use strict";r(301)},function(t,e,r){"use strict";r(302)},function(t,e,r){"use strict";r(303)},function(t,e,r){t.exports=function(){"use strict";var t=6e4,e=36e5,r="millisecond",i="second",n="minute",a="hour",s="day",o="week",c="month",f="quarter",h="year",u="date",d="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},g=function(t,e,r){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(r)+t},m={s:g,z:function(t){var e=-t.utcOffset(),r=Math.abs(e),i=Math.floor(r/60),n=r%60;return(e<=0?"+":"-")+g(i,2,"0")+":"+g(n,2,"0")},m:function t(e,r){if(e.date()=e||r<0||p&&t-f>=a}function w(){var t=l();if(_(t))return S(t);o=setTimeout(w,function(t){var r=e-(t-c);return p?d(r,a-(t-f)):r}(t))}function S(t){return o=void 0,m&&i?v(t):(i=n=void 0,s)}function M(){var t=l(),r=_(t);if(i=arguments,n=this,c=t,r){if(void 0===o)return y(c);if(p)return o=setTimeout(w,e),v(c)}return void 0===o&&(o=setTimeout(w,e)),s}return e=g(e)||0,b(r)&&(h=!!r.leading,a=(p="maxWait"in r)?u(g(r.maxWait)||0,e):a,m="trailing"in r?!!r.trailing:m),M.cancel=function(){void 0!==o&&clearTimeout(o),f=0,i=c=n=o=void 0},M.flush=function(){return void 0===o?s:S(l())},M}function b(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function g(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==h.call(t)}(t))return NaN;if(b(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=b(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(r,"");var o=n.test(t);return o||a.test(t)?s(t.slice(2),o?2:8):i.test(t)?NaN:+t}t.exports=function(t,e,r){var i=!0,n=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return b(r)&&(i="leading"in r?!!r.leading:i,n="trailing"in r?!!r.trailing:n),p(t,e,{leading:i,maxWait:e,trailing:n})}},function(t,e,r){"use strict";r(319)}])]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/vendors~layout-Blog~layout-Layout~layout-NotFound~layout-Slide.b1126c72.js b/docs/docs/.vuepress/dist/assets/js/vendors~layout-Blog~layout-Layout~layout-NotFound~layout-Slide.b1126c72.js deleted file mode 100644 index 053ed915..00000000 --- a/docs/docs/.vuepress/dist/assets/js/vendors~layout-Blog~layout-Layout~layout-NotFound~layout-Slide.b1126c72.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{186:function(e,t,o){"use strict";o.d(t,"a",(function(){return i})),o.d(t,"b",(function(){return r}));const i=e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`,n={"zh-CN":{lang:"zh-CN",selectText:"选择语言",label:"简体中文",meta:{contributor:"贡献者",editLink:"编辑此页",updateTime:"上次编辑于"},themeColor:{themeColor:"主题色",themeMode:"主题模式"},encrypt:{title:"请输入密码",errorHint:"请输入正确密码"},error404:{hint:["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],back:"返回上一页",home:"带我回家"},blog:{article:"文章",articleList:"文章列表",category:"分类",tag:"标签",timeline:"时间轴",timelineText:"昨日不在",allText:"全部",intro:"个人介绍",star:"收藏",slides:"幻灯片",encrypt:"加密"}},"en-US":{lang:"en-US",selectText:"Language",label:"English",ariaLabel:"Select language",meta:{contributor:"Contributors",editLink:"Edit this page",updateTime:"Last update"},themeColor:{themeColor:"Theme Color",themeMode:"Theme Mode"},encrypt:{title:"Please enter password",errorHint:"Please enter the correct password!"},error404:{hint:["There’s nothing here.","How did we get here?","That’s a Four-Oh-Four.","Looks like we've got some broken links."],back:"Go back",home:"Take me home"},blog:{article:"Articles",articleList:"Article List",category:"Category",tag:"Tags",timeline:"Timeline",timelineText:"Yesterday Once More!",allText:"All",intro:"Personal Intro",star:"Star",slides:"Slides",encrypt:"Encrypted"}},"de-AT":{lang:"de-AT",selectText:"Sprache",label:"Deutsch",ariaLabel:"Sprache wählen",meta:{contributor:"Mitwirkende",editLink:"Diese Seite barbeiten",updateTime:"Zuletzt geändert"},themeColor:{themeColor:"Design-Farbe",themeMode:"Design-Modus"},encrypt:{title:"Passwort eingeben",errorHint:"Bitte das korrekte Passwort eingeben!"},error404:{hint:["Hier gibt es nichts.","Wie sind wir hier hergekommen?","Das ist wohl eine Vier-Null-Vier.","Sieht aus als hättest du einen kaputten Link gefunden."],back:"Zurück",home:"Zur Startseite"},blog:{article:"Artikel",articleList:"Artikel Liste",category:"Kategorie",tag:"Tags",timeline:"Timeline",timelineText:"Yesterday Once More!",allText:"Alle",intro:"Persönliche Einleitung",star:"Star",slides:"Slides",encrypt:"Verschlüsselt"}},"vi-VN":{lang:"vi-VN",selectText:"Ngôn ngữ",label:"Tiếng Việt",ariaLabel:"Chọn ngôn ngữ",meta:{contributor:"Người đóng góp",editLink:"Chỉnh sửa trang này",updateTime:"Cập nhật gần nhất lúc"},themeColor:{themeColor:"Màu nền",themeMode:"Theme Mode"},encrypt:{title:"Xin vui lòng nhập mật khẩu",errorHint:"Vui lòng nhập đúng mật khẩu"},error404:{hint:["Ở đây chẳng có gì cả.","Sao chúng ta lại đến đây?","Đây là lỗi bốn-không-bốn","Có vẻ chúng ta có vài broken link."],back:"Quay lại",home:"Trang chủ"},blog:{article:"Bài viết",articleList:"Danh sách Bài viết",category:"Category",tag:"Tags",timeline:"Timeline",timelineText:"Yesterday Once More!",allText:"Tất cả",intro:"Giới thiệu cá nhân",star:"Ngôi sao",slides:"Bài thuyết trình",encrypt:"Mã hóa"}},"ru-RU":{lang:"ru-RU",selectText:"Язык",label:"Русский",ariaLabel:"Выберите язык",meta:{contributor:"Авторы",editLink:"Редактировать эту страницу",updateTime:"Последнее обновление"},themeColor:{themeColor:"Цвет темы",themeMode:"Режим темы"},encrypt:{title:"Пожалуйста, введите пароль",errorHint:"Пожалуйста, введите правильный пароль!"},error404:{hint:["Здесь ничего нет.","Как мы сюда попали?",'Это "4-0-4".',"Похоже, у нас есть несколько неработающих ссылок."],back:"Вернуться назад",home:"Вернуться на главную"},blog:{article:"Статьи",articleList:"Список статей",category:"Категория",tag:"Тэги",timeline:"Таймлайн",timelineText:"Вчера еще раз!",allText:"Всё",intro:"Личное вступление",star:"Звезда",slides:"Слайды",encrypt:"Зашифровано"}},"uk-UA":{lang:"uk-UA",selectText:"Мова",label:"Українська",ariaLabel:"Оберіть мову",meta:{contributor:"Автори",editLink:"Редагувати цю сторінку",updateTime:"Останнє оновлення"},themeColor:{themeColor:"Колір теми",themeMode:"Тематичний режим"},encrypt:{title:"Будь ласка, введіть пароль",errorHint:"Будь ласка, введіть правильний пароль!"},error404:{hint:["Тут немає нічого.","Як ми сюди потрапили?",'Це "4-0-4".',"Схоже, у нас є непрацюючі посилання."],back:"Повернутися назад",home:"Повернутися на головну"},blog:{article:"Статті",articleList:"Список статей",category:"Категорія",tag:"Теги",timeline:"Хронологія",timelineText:"Вчора ще раз!",allText:"Все",intro:"Особистий вступ",star:"Зірка",slides:"Слайди",encrypt:"Зашифровано"}}},r=()=>n["en-US"]},290:function(e,t,o){"use strict";const i=e=>"function"==typeof e.value||(console.warn("[Vue-click-outside:] provided expression",e.expression,"is not a function."),!1),n=e=>void 0!==e.componentInstance&&e.componentInstance.$isServer;t.a={bind:(e,t,o)=>{if(!i(t))return;const r=t=>{if(!o.context)return;const i=t.path||(t.composedPath?t.composedPath():[]);i&&i.length>0&&i.unshift(t.target),e.contains(t.target)||((e,t)=>{if(!e||!t)return!1;for(let o=0,i=t.length;o{i(t)&&e.$vueClickOutside&&(e.$vueClickOutside.callback=t.value)},unbind:(e,t,o)=>{const i="ontouchstart"in document.documentElement?"touchstart":"click";!n(o)&&e.$vueClickOutside&&document.removeEventListener(i,e.$vueClickOutside.handler),delete e.$vueClickOutside}}},291:function(e,t,o){},292:function(e,t,o){},293:function(e,t,o){},335:function(e,t,o){"use strict";var i=o(0),n=o(290),r=o(186),a=o(1),s=Object(a.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{staticClass:"icon auto-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M460.864 539.072H564.8L510.592 376l-49.728 163.072zM872 362.368V149.504H659.648L510.528 0l-149.12 149.504H149.12v212.928L0 511.872l149.12 149.504v212.928h212.352l149.12 149.504 149.12-149.504h212.352V661.376l149.12-149.504L872 362.368zM614.464 693.12l-31.616-90.624H438.272l-31.616 90.624h-85.888l144.576-407.68h90.368l144.576 407.68h-85.824zm0 0",fill:"currentColor"}})])}),[],!1,null,null,null).exports,l=Object(a.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{staticClass:"icon dark-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M935.539 630.402c-11.43-11.432-28.674-14.739-43.531-8.354-46.734 20.103-96.363 30.297-147.508 30.297-99.59 0-193.221-38.784-263.64-109.203-108.637-108.637-139.61-270.022-78.908-411.148a39.497 39.497 0 0 0-51.886-51.887c-52.637 22.64-100.017 54.81-140.826 95.616-85.346 85.346-132.346 198.821-132.346 319.52 0 120.7 47.001 234.172 132.347 319.519S408.063 947.11 528.76 947.11c120.7 0 234.172-47.003 319.52-132.351 40.809-40.81 72.978-88.19 95.616-140.826a39.497 39.497 0 0 0-8.356-43.532z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,c=Object(a.a)({},(function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{staticClass:"icon light-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M512 256a42.667 42.667 0 0 0 42.667-42.667V128a42.667 42.667 0 0 0-85.334 0v85.333A42.667 42.667 0 0 0 512 256zm384 213.333h-85.333a42.667 42.667 0 0 0 0 85.334H896a42.667 42.667 0 0 0 0-85.334zM256 512a42.667 42.667 0 0 0-42.667-42.667H128a42.667 42.667 0 0 0 0 85.334h85.333A42.667 42.667 0 0 0 256 512zm9.387-298.667a42.667 42.667 0 0 0-59.307 62.72l61.44 59.307a42.667 42.667 0 0 0 31.147 11.947 42.667 42.667 0 0 0 30.72-13.227 42.667 42.667 0 0 0 0-60.16zm459.946 133.974a42.667 42.667 0 0 0 29.44-11.947l61.44-59.307a42.667 42.667 0 0 0-57.6-62.72l-61.44 60.587a42.667 42.667 0 0 0 0 60.16 42.667 42.667 0 0 0 28.16 13.227zM512 768a42.667 42.667 0 0 0-42.667 42.667V896a42.667 42.667 0 0 0 85.334 0v-85.333A42.667 42.667 0 0 0 512 768zm244.48-79.36a42.667 42.667 0 0 0-59.307 61.44l61.44 60.587a42.667 42.667 0 0 0 29.44 11.946 42.667 42.667 0 0 0 30.72-12.8 42.667 42.667 0 0 0 0-60.586zm-488.96 0-61.44 59.307a42.667 42.667 0 0 0 0 60.586 42.667 42.667 0 0 0 30.72 12.8 42.667 42.667 0 0 0 28.587-10.666l61.44-59.307a42.667 42.667 0 0 0-59.307-61.44zM512 341.333A170.667 170.667 0 1 0 682.667 512 170.667 170.667 0 0 0 512 341.333z",fill:"currentColor"}})])}),[],!1,null,null,null).exports;const h=(e,t,o)=>{const i=[];e.remove(...o),e.forEach(e=>{i.push(e)}),e.value="",e.add(...t,...i)};var m=i.a.extend({name:"DarkmodeSwitch",components:{AutoIcon:s,DarkIcon:l,LightIcon:c},data:()=>({darkmode:"auto"}),computed:{darkmodeConfig(){return this.$themeConfig.darkmode||"auto-switch"}},mounted(){this.darkmode=localStorage.getItem("darkmode")||"auto","auto-switch"===this.darkmodeConfig?"auto"===this.darkmode?this.setDarkmode("auto"):this.setDarkmode(this.darkmode):"auto"===this.darkmodeConfig?this.setDarkmode("auto"):"switch"===this.darkmodeConfig?this.setDarkmode(this.darkmode):this.setDarkmode("off")},methods:{setDarkmode(e){if("on"===e)this.toggleDarkmode(!0);else if("off"===e)this.toggleDarkmode(!1);else{const e=window.matchMedia("(prefers-color-scheme: dark)").matches,t=window.matchMedia("(prefers-color-scheme: light)").matches;if(window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{e.matches&&this.toggleDarkmode(!0)}),window.matchMedia("(prefers-color-scheme: light)").addEventListener("change",e=>{e.matches&&this.toggleDarkmode(!1)}),e)this.toggleDarkmode(!0);else if(t)this.toggleDarkmode(!1);else{const e=(new Date).getHours();this.toggleDarkmode(e<6||e>=18)}}this.darkmode=e,localStorage.setItem("darkmode",e)},toggleDarkmode(e){const t=document.body.classList;e?h(t,["theme-dark"],["theme-light"]):h(t,["theme-light"],["theme-dark"])}}}),d=(o(430),Object(a.a)(m,(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"darkmode-switch"},["auto-switch"===e.darkmodeConfig?[o("div",{staticClass:"item day",class:{active:"off"===e.darkmode},on:{click:function(t){return e.setDarkmode("off")}}},[o("LightIcon")],1),e._v(" "),o("div",{staticClass:"item auto",class:{active:"auto"===e.darkmode},on:{click:function(t){return e.setDarkmode("auto")}}},[o("AutoIcon")],1),e._v(" "),o("div",{staticClass:"item night",class:{active:"on"===e.darkmode},on:{click:function(t){return e.setDarkmode("on")}}},[o("DarkIcon")],1)]:"switch"===e.darkmodeConfig?o("div",{staticClass:"switch"},[o("input",{staticClass:"switch-input",attrs:{id:"switch",type:"checkbox"},domProps:{checked:"on"!==e.darkmode},on:{click:function(t){return e.setDarkmode("on"===e.darkmode?"off":"on")}}}),e._v(" "),e._m(0)]):e._e()],2)}),[function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"label",attrs:{for:"switch"}},[t("span",{staticClass:"label-content"})])}],!1,null,null,null).exports);const u={red:"#e74c3c",blue:"#3498db",green:"#3eaf7c",orange:"#f39c12",purple:"#8e44ad"};var g=i.a.extend({name:"ThemeOptions",components:{DarkmodeSwitch:d},data:()=>({themeColor:{},isDarkmode:!1}),computed:{text(){return this.$themeLocaleConfig.themeColor||Object(r.b)().themeColor},themeColorEnabled(){return!1!==this.$themeConfig.themeColor},switchEnabled(){return"disable"!==this.$themeConfig.darkmode&&"auto"!==this.$themeConfig.darkmode}},mounted(){const e=localStorage.getItem("theme");this.themeColor={list:this.$themeConfig.themeColor?Object.keys(this.$themeConfig.themeColor):Object.keys(u),picker:this.$themeConfig.themeColor||u},e&&this.setTheme(e)},methods:{setTheme(e){const t=document.body.classList,o=this.themeColor.list.map(e=>"theme-"+e);if(!e)return localStorage.removeItem("theme"),void t.remove(...o);t.remove(...o.filter(t=>t!=="theme-"+e)),t.add("theme-"+e),localStorage.setItem("theme",e)}}}),k=(o(431),Object(a.a)(g,(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"theme-options"},[e.themeColorEnabled?o("ul",{staticClass:"themecolor-select"},[o("label",{attrs:{for:"themecolor-select"},domProps:{textContent:e._s(e.text.themeColor+":")}}),e._v(" "),o("li",[o("span",{staticClass:"default-theme",on:{click:function(t){return e.setTheme()}}})]),e._v(" "),e._l(e.themeColor.list,(function(t){return o("li",{key:t},[o("span",{style:{background:e.themeColor.picker[t]},on:{click:function(o){return e.setTheme(t)}}})])}))],2):e._e(),e._v(" "),e.switchEnabled?o("div",{staticClass:"darkmode-toggle"},[o("label",{staticClass:"desc",attrs:{for:"darkmode-toggle"},domProps:{textContent:e._s(e.text.themeMode+":")}}),e._v(" "),o("DarkmodeSwitch"),e._v(" "),o("ScreenFull")],1):e._e()])}),[],!1,null,null,null).exports),p=i.a.extend({name:"ThemeColor",directives:{"click-outside":n.a},components:{ThemeOptions:k},data:()=>({showMenu:!1}),methods:{clickOutside(){this.showMenu=!1}}}),C=(o(432),Object(a.a)(p,(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("button",{directives:[{name:"click-outside",rawName:"v-click-outside",value:e.clickOutside,expression:"clickOutside"}],staticClass:"color-button",class:{select:e.showMenu},attrs:{tabindex:"-1","aria-hidden":"true"},on:{click:function(t){e.showMenu=!e.showMenu}}},[o("svg",{staticClass:"skin-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[o("path",{attrs:{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4\n 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32\n 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0\n 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2\n 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4\n 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2\n 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224\n 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4\n 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0\n 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6\n 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128\n 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2\n 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8\n 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4\n 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6\n 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"}})]),e._v(" "),o("transition",{attrs:{mode:"out-in",name:"menu-transition"}},[o("div",{directives:[{name:"show",rawName:"v-show",value:e.showMenu,expression:"showMenu"}],staticClass:"color-picker-menu"},[o("ThemeOptions")],1)])],1)}),[],!1,null,null,null));t.a=C.exports},430:function(e,t,o){"use strict";o(291)},431:function(e,t,o){"use strict";o(292)},432:function(e,t,o){"use strict";o(293)}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/vendors~layout-Layout.0c0d0458.js b/docs/docs/.vuepress/dist/assets/js/vendors~layout-Layout.0c0d0458.js deleted file mode 100644 index 66ae5cb8..00000000 --- a/docs/docs/.vuepress/dist/assets/js/vendors~layout-Layout.0c0d0458.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{239:function(t,e,n){"use strict";n.d(e,"a",(function(){return s}));var a=n(214),r=n(237),o=n(213);const s=r.a.extend({data:()=>({encryptPasswordConfig:{}}),computed:{pathEncryptMatchKeys(){return Object(o.a)(this.encryptOptions,this.$route.path)},isPathEncrypted(){if(0===this.pathEncryptMatchKeys.length)return!1;const{config:t}=this.encryptOptions;return this.pathEncryptMatchKeys.every(e=>{const n=t[e],r="string"==typeof n?[n]:n;return!this.encryptPasswordConfig[e]||r.every(t=>!Object(a.compareSync)(this.encryptPasswordConfig[e],t))})}},mounted(){const t=localStorage.getItem("encryptConfig");t&&(this.encryptPasswordConfig=JSON.parse(t))},methods:{checkPathPassword(t){const{config:e}=this.$themeConfig.encrypt;for(const n of this.pathEncryptMatchKeys){const r=e[n];if(("string"==typeof r?[r]:r).filter(e=>Object(a.compareSync)(t,e))){this.$set(this.encryptPasswordConfig,n,t),localStorage.setItem("encryptConfig",JSON.stringify(this.encryptPasswordConfig));break}}}}})},325:function(t,e,n){},326:function(t,e,n){},327:function(t,e,n){},328:function(t,e,n){},329:function(t,e,n){},330:function(t,e,n){},331:function(t,e,n){},332:function(t,e,n){},466:function(t,e,n){t.exports=n.p+"assets/img/hero.b62ddd9c.jpg"},467:function(t,e,n){"use strict";n(325)},468:function(t,e,n){"use strict";n(326)},469:function(t,e,n){"use strict";n(327)},470:function(t,e,n){"use strict";n(328)},471:function(t,e,n){"use strict";n(329)},472:function(t,e,n){"use strict";n(330)},473:function(t,e,n){"use strict";n(331)},474:function(t,e,n){"use strict";n(332)},483:function(t,e,n){"use strict";n.r(e);var a=n(0),r=n(207),o=n(241),s=n(189),i=n(466),l=n.n(i),c=a.a.extend({name:"BlogHero",components:{MyTransition:s.a},data:()=>({defaultHeroImage:l.a}),computed:{heroImageStyle(){const t={maxHeight:"180px",margin:!1===this.$frontmatter.showTitle?"6rem auto 1.5rem":"1rem auto"};return Object.assign(Object.assign({},t),this.$frontmatter.heroImageStyle)},bgImageStyle(){const{bgImageStyle:t={}}=this.$frontmatter;return Object.assign(Object.assign({},{height:"350px",textAlign:"center",overflow:"hidden"}),t)}}}),u=(n(467),n(1)),p=Object(u.a)(c,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return!1!==t.$frontmatter.hero?n("div",{staticClass:"blog-hero",class:{full:t.$frontmatter.heroFullScreen},style:Object.assign({},t.bgImageStyle)},[n("div",{staticClass:"mask",style:{background:"url("+(t.$frontmatter.bgImage?t.$withBase(t.$frontmatter.bgImage):t.defaultHeroImage)+") center/cover no-repeat"}}),t._v(" "),n("MyTransition",{attrs:{delay:.04}},[t.$frontmatter.heroImage?n("img",{staticClass:"hero-logo",style:t.heroImageStyle||{},attrs:{src:t.$withBase(t.$frontmatter.heroImage),alt:"hero"}}):t._e()]),t._v(" "),n("MyTransition",{attrs:{delay:.08}},[!1!==t.$frontmatter.showTitle?n("h1",[t._v("\n "+t._s(t.$frontmatter.heroText||t.$title||"Hope")+"\n ")]):t._e()]),t._v(" "),n("MyTransition",{attrs:{delay:.12}},[t.$description?n("p",{staticClass:"description",domProps:{textContent:t._s(t.$description)}}):t._e()])],1):t._e()}),[],!1,null,null,null).exports,h=n(346),m=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon book-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M256 853.333h426.667A85.333 85.333 0 0 0 768 768V256a85.333 85.333 0 0 0-85.333-85.333H469.333a42.667 42.667 0 0 1 0-85.334h213.334A170.667 170.667 0 0 1 853.333 256v512a170.667 170.667 0 0 1-170.666 170.667H213.333A42.667 42.667 0 0 1 170.667 896V128a42.667 42.667 0 0 1 42.666-42.667h128A42.667 42.667 0 0 1 384 128v304.256l61.653-41.088a42.667 42.667 0 0 1 47.36 0l61.654 41.045V256A42.667 42.667 0 0 1 640 256v256a42.667 42.667 0 0 1-66.347 35.499l-104.32-69.547-104.32 69.547A42.667 42.667 0 0 1 298.667 512V170.667H256v682.666z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,d=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon link-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M460.8 584.533c17.067 17.067 17.067 42.667 0 59.734-17.067 17.066-42.667 17.066-59.733 0-85.334-85.334-85.334-217.6 0-302.934L554.667 192C640 110.933 776.533 110.933 857.6 196.267c81.067 81.066 81.067 213.333 0 294.4l-68.267 64c0-34.134-4.266-68.267-17.066-102.4l21.333-21.334c51.2-46.933 55.467-128 4.267-179.2s-128-55.466-179.2-4.266c-4.267 0-4.267 4.266-4.267 4.266L465.067 401.067c-51.2 51.2-51.2 132.266-4.267 183.466m123.733-183.466C601.6 384 627.2 384 644.267 401.067c85.333 85.333 85.333 217.6 0 302.933l-153.6 149.333C405.333 934.4 268.8 934.4 187.733 849.067c-81.066-81.067-81.066-213.334 0-294.4l68.267-64c0 34.133 4.267 72.533 17.067 102.4L251.733 614.4C204.8 665.6 204.8 746.667 256 793.6c51.2 46.933 123.733 46.933 174.933 0l149.334-149.333c51.2-51.2 51.2-128 0-179.2-12.8-17.067-17.067-46.934 4.266-64z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,f=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M987.456 425.152H864V295.296a36.48 36.48 0 0 0-36.544-36.544h-360l-134.08-128.256A9.344 9.344 0 0 0 327.04 128H36.48A36.48 36.48 0 0 0 0 164.544v676.608a36.48 36.48 0 0 0 36.544 36.544h797.76a36.672 36.672 0 0 0 33.92-22.848L1021.44 475.52a36.48 36.48 0 0 0-33.92-50.304zM82.304 210.304h215.424l136.64 130.752h347.328v84.096H198.848A36.672 36.672 0 0 0 164.928 448L82.304 652.8V210.304zM808.32 795.456H108.544l118.08-292.608h699.904L808.32 795.52z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,g=n(198),v=a.a.extend({name:"ProjectList",components:{ArticleIcon:h.a,BookIcon:m,LinkIcon:d,ProjectIcon:f},methods:{navigate(t){Object(g.a)(t,this.$router,this.$route)}}}),_=(n(468),Object(u.a)(v,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"project-list"},t._l(t.$frontmatter.project||[],(function(e,a){return n("div",{key:e.name,staticClass:"project",class:"project"+a%9,on:{click:function(n){return t.navigate(e.link)}}},[e.cover?n("div",{staticClass:"cover",style:"background: url("+t.$withBase(e.cover)+") center/cover no-repeat;"}):t._e(),t._v(" "),n(e.type+"-icon",{tag:"component"}),t._v(" "),n("div",{staticClass:"name"},[t._v(t._s(e.name))]),t._v(" "),n("div",{staticClass:"desc"},[t._v(t._s(e.desc))])],1)})),0)}),[],!1,null,null,null).exports),y=a.a.extend({name:"BlogHome",components:{ArticleList:o.a,BlogHero:p,BlogInfo:r.a,MyTransition:s.a,ProjectList:_}}),$=(n(469),Object(u.a)(y,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"page blog"},[e("BlogHero"),this._v(" "),e("div",{staticClass:"blog-page-wrapper"},[e("main",{staticClass:"blog-home"},[e("MyTransition",{attrs:{delay:.16}},[e("ProjectList")],1),this._v(" "),e("MyTransition",{attrs:{delay:.24}},[e("ArticleList",{key:this.$route.path})],1)],1),this._v(" "),e("MyTransition",{attrs:{delay:.16}},[e("BlogInfo")],1)],1),this._v(" "),e("MyTransition",{attrs:{delay:.28}},[e("Content",{key:this.$route.path,staticClass:"theme-default-content",attrs:{custom:""}})],1)],1)}),[],!1,null,null,null).exports),b=n(16),C=n(240),x=n(199),w=a.a.extend({name:"Home",components:{MyTransition:s.a,NavLink:x.a},computed:{actionLinks(){const{action:t}=this.$frontmatter;return Array.isArray(t)?t:[t]}},methods:{navigate(t){Object(g.a)(t,this.$router,this.$route)}}}),k=(n(470),Object(u.a)(w,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"home",attrs:{"aria-labelledby":null!==t.$frontmatter.heroText?"main-title":null}},[n("header",{staticClass:"hero"},[n("MyTransition",[t.$frontmatter.heroImage?n("img",{key:"light",class:{light:Boolean(t.$frontmatter.darkHeroImage)},attrs:{src:t.$withBase(t.$frontmatter.heroImage),alt:t.$frontmatter.heroAlt||"HomeLogo"}}):t._e()]),t._v(" "),n("MyTransition",[t.$frontmatter.darkHeroImage?n("img",{key:"dark",staticClass:"dark",attrs:{src:t.$withBase(t.$frontmatter.darkHeroImage),alt:t.$frontmatter.heroAlt||"HomeLogo"}}):t._e()]),t._v(" "),n("div",{staticClass:"hero-info"},[n("MyTransition",{attrs:{delay:.04}},[!1!==t.$frontmatter.heroText?n("h1",{attrs:{id:"main-title"},domProps:{textContent:t._s(t.$frontmatter.heroText||t.$title||"Hello")}}):t._e()]),t._v(" "),n("MyTransition",{attrs:{delay:.08}},[n("p",{staticClass:"description",domProps:{textContent:t._s(t.$frontmatter.tagline||t.$description||"Welcome to your VuePress site")}})]),t._v(" "),n("MyTransition",{attrs:{delay:.12}},[t.$frontmatter.action?n("p",{staticClass:"action"},t._l(t.actionLinks,(function(t){return n("NavLink",{key:t.text,staticClass:"action-button",class:t.type||"",attrs:{item:t}})})),1):t._e()])],1)],1),t._v(" "),n("MyTransition",{attrs:{delay:.16}},[t.$frontmatter.features&&t.$frontmatter.features.length?n("div",{staticClass:"features"},[t._l(t.$frontmatter.features,(function(e,a){return[e.link?n("div",{key:a,staticClass:"feature link",class:"feature"+a%9,attrs:{tabindex:"0",role:"navigation"},on:{click:function(n){return t.navigate(e.link)}}},[n("h2",[t._v(t._s(e.title))]),t._v(" "),n("p",[t._v(t._s(e.details))])]):n("div",{key:a,staticClass:"feature",class:"feature"+a%9},[n("h2",[t._v(t._s(e.title))]),t._v(" "),n("p",[t._v(t._s(e.details))])])]}))],2):t._e()]),t._v(" "),n("MyTransition",{attrs:{delay:.24}},[n("Content",{staticClass:"theme-default-content custom"})],1)],1)}),[],!1,null,null,null).exports),T=n(345),I=n(350),P=n(194),M=a.a.extend({name:"AuthorInfo",components:{AuthorIcon:I.a},data:()=>({commentOption:P.a}),computed:{author(){const{author:t}=this.$frontmatter;return t||(!1===t?"":this.commentOption.author||"")},hint(){return P.b[this.$localePath||"/"].author}}}),O=Object(u.a)(M,(function(){var t=this.$createElement,e=this._self._c||t;return this.author?e("span",{attrs:{"aria-label":this.hint,"data-balloon-pos":"down"}},[e("AuthorIcon"),this._v(" "),e("span",{attrs:{property:"author"},domProps:{textContent:this._s(this.author)}})],1):this._e()}),[],!1,null,null,null).exports,j=n(342),L=n(352),E=a.a.extend({name:"ReadingTimeInfo",components:{TimerIcon:L.a},computed:{readingTime(){return`PT${Math.max(Math.round(this.$page.readingTime.minutes),1)}M`},text(){const t=P.c[this.$localePath||"/"].minute,e=P.c[this.$localePath||"/"].time;return this.$page.readingTime.minutes<1?t:e.replace("$time",Math.round(this.$page.readingTime.minutes).toString())},hint(){return P.b[this.$localePath||"/"].readingTime}}}),B=Object(u.a)(E,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.text?n("span",{staticClass:"reading-time-info",attrs:{"aria-label":t.hint,"data-balloon-pos":"down"}},[n("TimerIcon"),t._v(" "),n("span",{domProps:{textContent:t._s(t.text)}}),t._v(" "),n("meta",{attrs:{property:"timeRequired",content:t.readingTime}})],1):t._e()}),[],!1,null,null,null).exports,A=n(343),S=n(351),H=a.a.extend({name:"TimeInfo",components:{CalendarIcon:S.a},computed:{time(){const{date:t,time:e=t}=this.$frontmatter;if("string"==typeof e){if(-1!==e.indexOf("T")){const[t,n]=e.split("T"),[a]=n.split(".");return`${t} ${"00:00:00"===a?"":a}`}return e}const{createTimeStamp:n}=this.$page;if(n){const t=new Date(n);return`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()}`}return""},hint(){return P.b[this.$localePath||"/"].time}}}),N=Object(u.a)(H,(function(){var t=this.$createElement,e=this._self._c||t;return this.time?e("span",{staticClass:"time-info",attrs:{"aria-label":this.hint,"data-balloon-pos":"down"}},[e("CalendarIcon"),this._v(" "),e("span",{attrs:{property:"datePublished"},domProps:{textContent:this._s(this.time)}})],1):this._e()}),[],!1,null,null,null).exports,z=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon eye-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M992 512.096c0-5.76-.992-10.592-1.28-11.136-.192-2.88-1.152-8.064-2.08-10.816-.256-.672-.544-1.376-.832-2.08-.48-1.568-1.024-3.104-1.6-4.32C897.664 290.112 707.104 160 512 160c-195.072 0-385.632 130.016-473.76 322.592-1.056 2.112-1.792 4.096-2.272 5.856a55.512 55.512 0 0 0-.64 1.6c-1.76 5.088-1.792 8.64-1.632 7.744-.832 3.744-1.568 11.168-1.568 11.168-.224 2.272-.224 4.032.032 6.304 0 0 .736 6.464 1.088 7.808.128 1.824.576 4.512 1.12 6.976h-.032c.448 2.08 1.12 4.096 1.984 6.08.48 1.536.992 2.976 1.472 4.032C126.432 733.856 316.992 864 512 864c195.136 0 385.696-130.048 473.216-321.696 1.376-2.496 2.24-4.832 2.848-6.912.256-.608.48-1.184.672-1.728 1.536-4.48 1.856-8.32 1.728-8.32l-.032.032c.608-3.104 1.568-7.744 1.568-13.28zM512 672c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160-71.776 160-160 160z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,V=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon eye-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M726.4 201.6c-12.8-9.6-28.8-6.4-38.4 0-9.6 9.6-16 25.6-9.6 38.4 6.4 12.8 9.6 28.8 12.8 44.8C604.8 83.2 460.8 38.4 454.4 35.2c-9.6-3.2-22.4 0-28.8 6.4-9.6 6.4-12.8 19.2-9.6 28.8 12.8 86.4-25.6 188.8-115.2 310.4-6.4-25.6-16-51.2-32-80-9.6-9.6-22.4-16-35.2-12.8-16 3.2-25.6 12.8-25.6 28.8-3.2 48-25.6 92.8-51.2 140.8C134.4 499.2 112 544 102.4 592c-32 150.4 99.2 329.6 233.6 380.8 9.6 3.2 19.2 6.4 32 9.6-25.6-19.2-41.6-51.2-48-96C294.4 691.2 505.6 640 515.2 460.8c153.6 105.6 224 336 137.6 505.6 3.2 0 6.4-3.2 9.6-3.2 0 0 3.2 0 3.2-3.2 163.2-89.6 252.8-208 259.2-345.6 16-211.2-163.2-390.4-198.4-412.8z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,D=a.a.extend({name:"VisitorInfo",components:{EyeIcon:z,FireIcon:V},data:()=>({count:0}),computed:{enableVisitor(){if(!Boolean("valine"===P.a.type&&P.a.appId&&P.a.appKey||"waline"===P.a.type&&P.a.serverURL))return!1;const t=!1!==P.a.visitor,e=this.$frontmatter.visitor;return t&&!1!==e||Boolean(e)},visitorID(){const{base:t}=this.$site;return t?`${t.slice(0,t.length-1)}${this.$page.path}`:this.$page.path},hint(){return P.b[this.$localePath||"/"].views}},watch:{$route(t,e){t.path!==e.path&&setTimeout(()=>{this.getCount()},500)}},mounted(){setTimeout(()=>{this.getCount()},1500)},methods:{getCount(){const t=document.querySelector(".leancloud_visitors .leancloud-visitors-count");if(t){const e=t.textContent;e&&!isNaN(Number(e))?this.count=Number(e):setTimeout(()=>{this.getCount()},500)}}}}),R=Object(u.a)(D,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.enableVisitor?n("span",{staticClass:"visitor-info",attrs:{"aria-label":t.hint,"data-balloon-pos":"down"}},[t.count<1e3?n("EyeIcon"):n("FireIcon"),t._v(" "),n("span",{staticClass:"leancloud_visitors",attrs:{id:t.visitorID,"data-flag-title":t.$page.title}},[n("span",{staticClass:"leancloud-visitors-count"},[t._v("...")])])],1):t._e()}),[],!1,null,null,null).exports,K=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon word-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M518.217 432.64V73.143A73.143 73.143 0 0 1 603.43 1.097a512 512 0 0 1 419.474 419.474 73.143 73.143 0 0 1-72.046 85.212H591.36a73.143 73.143 0 0 1-73.143-73.143z",fill:"currentColor"}}),this._v(" "),e("path",{attrs:{d:"M493.714 566.857h340.297a73.143 73.143 0 0 1 73.143 85.577A457.143 457.143 0 1 1 371.566 117.76a73.143 73.143 0 0 1 85.577 73.143v339.383a36.571 36.571 0 0 0 36.571 36.571z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,F=a.a.extend({name:"ReadTimeInfo",components:{WordIcon:K},computed:{words(){return P.c[this.$localePath||"/"].word.replace("$word",this.$page.readingTime.words.toString())},hint(){return P.b[this.$localePath||"/"].words}}}),J=Object(u.a)(F,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.words?n("span",{staticClass:"words-info",attrs:{"aria-label":t.hint,"data-balloon-pos":"down"}},[n("WordIcon"),t._v(" "),n("span",{domProps:{textContent:t._s(t.words)}}),t._v(" "),n("meta",{attrs:{property:"wordCount",content:t.$page.readingTime.words}})],1):t._e()}),[],!1,null,null,null).exports,W=(n(64),a.a.extend({name:"PageInfo",components:{AuthorInfo:O,CategoryInfo:j.a,ReadingTimeInfo:B,TagInfo:A.a,TimeInfo:N,VisitorInfo:R,WordInfo:J},data:()=>({commentConfig:P.a}),computed:{config(){const t=this.$themeConfig.pageInfo,e=this.commentConfig.pageInfo,n=this.$page.frontmatter.pageInfo;return!1!==n&&(Array.isArray(n)?n:!1!==e&&(Array.isArray(e)?e:!1!==t&&(Array.isArray(t)?t:["author","visitor","time","category","tag","reading-time"])))},iconPrefix(){const{iconPrefix:t}=this.$themeConfig;return""===t?"":t||"icon-"},isOriginal(){return!0===this.$frontmatter.original},originText(){return P.b[this.$localePath||"/"].origin}}})),U=(n(471),Object(u.a)(W,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"page-title",attrs:{vocab:"https://schema.org/",typeof:"Article"}},[n("h1",[t.$frontmatter.icon?n("i",{class:"iconfont "+t.iconPrefix+t.$frontmatter.icon}):t._e(),t._v(" "),n("span",{attrs:{property:"headline"}},[t._v(t._s(t.$page.title))])]),t._v(" "),t.config?n("div",{staticClass:"page-info"},[t.isOriginal?n("span",{staticClass:"origin",domProps:{textContent:t._s(t.originText)}}):t._e(),t._v(" "),t._l(t.config,(function(e){return n(e+"-info",{key:t.$route.path+e,tag:"component"})}))],2):t._e(),t._v(" "),t.$frontmatter.image?n("meta",{attrs:{property:"image",content:t.$withBase(t.$frontmatter.image)}}):t._e(),t._v(" "),n("hr")])}),[],!1,null,null,null).exports),q=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon edit-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M117.953 696.992 64.306 959.696l265.931-49.336 450.204-452.505-212.284-213.376-450.204 452.513zm496.384-296.326L219.039 797.993l-46.108-46.34L568.233 354.33l46.104 46.335zm345.357-122.99-114.45 115.04-212.288-213.377 114.45-115.035 212.288 213.371zm0 0",fill:"currentColor"}})])}),[],!1,null,null,null).exports,Y=n(192),G=a.a.extend({name:"PageMeta",components:{EditIcon:q},computed:{i18n(){return this.$themeLocaleConfig.meta||{contributor:"Contributors",editLink:"Edit this page",updateTime:"Last Updated"}},contributors(){return!1===this.$page.frontmatter.contributor||!1===this.$themeConfig.contributor&&!this.$page.frontmatter.contributor?[]:this.$page.contributors||[]},contributorsText(){return this.i18n.contributor},updateTime(){return!1===this.$page.frontmatter.contributor||!1===this.$themeConfig.updateTime&&!this.$page.frontmatter.updateTime?"":this.$page.updateTime||""},updateTimeText(){return this.i18n.updateTime},editLink(){const t=this.$page.frontmatter.editLink||!1!==this.$themeConfig.editLinks&&!1!==this.$page.frontmatter.editLink,{repo:e,docsRepo:n}=this.$site.themeConfig;return!(!t||!e&&!n||!this.$page.relativePath)&&this.createEditLink()},editLinkText(){return this.i18n.editLink}},methods:{createEditLink(){const{repo:t="",docsRepo:e=t,docsDir:n="",docsBranch:a="main"}=this.$themeConfig;if(/bitbucket.org/u.test(e))return`${e.replace(Y.a,"")}/src/${a}/${n?n.replace(Y.a,"")+"/":""}${this.$page.relativePath}?mode=edit&spa=0&at=${a}&fileviewer=file-view-default`;if(/gitlab.com/u.test(e))return`${e.replace(Y.a,"")}/-/edit/${a}/${n?n.replace(Y.a,"")+"/":""}${this.$page.relativePath}`;return`${(Y.j.test(e)?e:"https://github.com/"+e).replace(Y.a,"")}/edit/${a}/${n?n.replace(Y.a,"")+"/":""}${this.$page.relativePath}`}}}),Q=(n(472),Object(u.a)(G,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("footer",{staticClass:"page-meta"},[t.editLink?n("div",{staticClass:"edit-link"},[n("EditIcon"),t._v(" "),n("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))])],1):t._e(),t._v(" "),t.updateTime?n("div",{staticClass:"meta-item update-time"},[n("span",{staticClass:"label"},[t._v(t._s(t.updateTimeText)+":")]),t._v(" "),n("span",{staticClass:"info"},[t._v(t._s(t.updateTime))])]):t._e(),t._v(" "),t.contributors&&t.contributors.length?n("div",{staticClass:"meta-item contributors"},[n("span",{staticClass:"label"},[t._v(t._s(t.contributorsText)+": ")]),t._v(" "),n("span",{staticClass:"info"},[t._l(t.contributors,(function(e,a){return[n("span",{key:a,staticClass:"contributor",attrs:{title:"email: "+e.email}},[t._v("\n "+t._s(e.name)+"\n ")]),t._v(" "),a!==t.contributors.length-1?[t._v(", ")]:t._e()]}))],2)]):t._e()])}),[],!1,null,null,null).exports),X=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon next-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M906.772 512c0 4.772-2.211 9.267-5.99 12.175L524.257 813.66a15.37 15.37 0 0 1-18.616.092 15.368 15.368 0 0 1-5.038-17.91l75.714-191.672h-443.73c-8.488 0-15.36-6.881-15.36-15.36v-153.6c0-8.489 6.872-15.36 15.36-15.36h443.73l-75.714-191.682a15.358 15.358 0 0 1 5.048-17.91c5.51-4.158 13.128-4.137 18.606.092l376.525 289.485a15.323 15.323 0 0 1 5.99 12.165z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,Z=Object(u.a)({},(function(){var t=this.$createElement,e=this._self._c||t;return e("svg",{staticClass:"icon prev-icon",attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[e("path",{attrs:{d:"M906.783 588.79c-.02 8.499-6.882 15.36-15.38 15.37l-443.7-.01 75.704 191.682c2.52 6.42.482 13.763-5.038 17.91-5.52 4.168-13.138 4.147-18.616-.092L123.228 524.175a15.362 15.362 0 0 1-6-12.165c0-4.782 2.222-9.277 6-12.185L499.753 210.35a15.388 15.388 0 0 1 9.38-3.195c3.236 0 6.502 1.034 9.236 3.103 5.52 4.147 7.578 11.49 5.038 17.91L447.683 419.84l443.72-.01c8.498.01 15.36 6.881 15.36 15.36l.02 153.6z",fill:"currentColor"}})])}),[],!1,null,null,null).exports,tt=n(243);const et=(t,e)=>{for(const n of t)"group"===n.type?et(n.children||[],e):e.push(n)},nt=(t,{themeConfig:e,page:n,route:a,site:r,sidebarItems:o})=>{const s=e[t+"Links"],i=n.frontmatter[t];return!1!==s&&!1!==i&&("string"==typeof i?Object(tt.c)(r.pages,Object(Y.k)(i,a.path)):((t,e,n)=>{const a=[];et(e,a);for(let e=0;e[]}},computed:{prev(){return nt("prev",{sidebarItems:this.sidebarItems,themeConfig:this.$themeConfig,page:this.$page,route:this.$route,site:this.$site})},next(){return nt("next",{sidebarItems:this.sidebarItems,themeConfig:this.$themeConfig,page:this.$page,route:this.$route,site:this.$site})}}}),rt=(n(473),Object(u.a)(at,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.prev||t.next?n("div",{staticClass:"page-nav"},[n("p",{staticClass:"inner"},[t.prev?n("span",{staticClass:"prev"},["external"===t.prev.type?n("a",{staticClass:"prev",attrs:{href:t.prev.path,target:"_blank",rel:"noopener noreferrer"}},[n("PrevIcon"),t._v("\n "+t._s(t.prev.title||t.prev.path)+"\n "),n("OutboundLink")],1):n("RouterLink",{staticClass:"prev",attrs:{to:t.prev.path}},[n("PrevIcon"),t._v("\n "+t._s(t.prev.title||t.prev.path)+"\n ")],1)],1):t._e(),t._v(" "),t.next?n("span",{staticClass:"next"},["external"===t.next.type?n("a",{attrs:{href:t.next.path,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.next.title||t.next.path)+"\n "),n("OutboundLink"),t._v(" "),n("NextIcon")],1):n("RouterLink",{attrs:{to:t.next.path}},[t._v("\n "+t._s(t.next.title||t.next.path)+"\n "),n("NextIcon")],1)],1):t._e()])]):t._e()}),[],!1,null,null,null).exports),ot=n(242),st=n(239).a.extend({name:"Page",components:{Anchor:T.a,Comment:b.a,MyTransition:s.a,PageInfo:U,PageMeta:Q,PageNav:rt,Password:ot.a},props:{sidebarItems:{type:Array,default:()=>[]},headers:{type:Array,default:()=>[]}},data:()=>({password:""}),computed:{pagePassword(){const{password:t}=this.$frontmatter;return"number"==typeof t?t.toString():"string"==typeof t?t:""},pageDescrypted(){return this.password===this.pagePassword}}}),it=(n(474),Object(u.a)(st,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"page"},[n("MyTransition",[n("BreadCrumb",{key:t.$route.path})],1),t._v(" "),t._t("top"),t._v(" "),n("MyTransition",{attrs:{delay:.04}},[n("PageInfo",{key:t.$route.path})],1),t._v(" "),t.pagePassword&&!t.pageDescrypted?n("MyTransition",{attrs:{delay:.08}},[n("Password",{key:t.$route.path,attrs:{page:!0},on:{"password-verify":function(e){t.password=e}}})],1):t.isPathEncrypted?n("MyTransition",{attrs:{delay:.08}},[n("Password",{key:t.$route.path,attrs:{page:!0},on:{"password-verify":t.checkPathPassword}})],1):[n("MyTransition",{attrs:{delay:.12}},[n("Anchor",{key:t.$route.path})],1),t._v(" "),!t.pagePassword||t.pageDescrypted?t._t("content-top"):t._e(),t._v(" "),n("MyTransition",{directives:[{name:"show",rawName:"v-show",value:!t.pagePassword||t.pageDescrypted,expression:"!pagePassword || pageDescrypted"}],attrs:{delay:.08}},[n("Content",{key:t.$route.path,staticClass:"theme-default-content"})],1),t._v(" "),!t.pagePassword||t.pageDescrypted?t._t("content-bottom"):t._e(),t._v(" "),n("MyTransition",{attrs:{delay:.12}},[n("PageMeta",{key:t.$route.path})],1),t._v(" "),n("MyTransition",{attrs:{delay:.14}},[n("PageNav",t._b({key:t.$route.path},"PageNav",{sidebarItems:t.sidebarItems},!1))],1),t._v(" "),n("MyTransition",{attrs:{delay:.16}},[n("Comment",{key:t.$route.path})],1)],t._v(" "),t._t("bottom")],2)}),[],!1,null,null,null).exports),lt=a.a.extend({name:"Layout",components:{BlogInfo:r.a,BlogHome:$,Common:C.a,ContentBottom:b.a,ContentTop:b.a,Home:k,NavbarCenter:b.a,NavbarEnd:b.a,NavbarStart:b.a,Page:it,PageBottom:b.a,PageTop:b.a,SidebarBottom:b.a,SidebarCenter:b.a,SidebarTop:b.a}}),ct=Object(u.a)(lt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("Common",{attrs:{sidebar:!0!==t.$frontmatter.blog},scopedSlots:t._u([{key:"navbar-start",fn:function(){return[t._t("navbar-start",[n("NavbarStart"),t._v(" "),n("Content",{attrs:{"slot-key":"navbar-start"}})])]},proxy:!0},{key:"navbar-center",fn:function(){return[t._t("navbar-center",[n("NavbarCenter"),t._v(" "),n("Content",{attrs:{"slot-key":"navbar-center"}})])]},proxy:!0},{key:"navbar-end",fn:function(){return[t._t("navbar-end",[n("NavbarEnd"),t._v(" "),n("Content",{attrs:{"slot-key":"navbar-end"}})])]},proxy:!0},{key:"sidebar-top",fn:function(){return[t._t("sidebar-top",[n("SidebarTop"),t._v(" "),n("Content",{attrs:{"slot-key":"sidebar-top"}})])]},proxy:!0},{key:"sidebar-center",fn:function(){return[t._t("sidebar-center",[n("SidebarCenter"),t._v(" "),n("Content",{attrs:{"slot-key":"sidebar-center"}})])]},proxy:!0},{key:"sidebar-bottom",fn:function(){return[t._t("sidebar-bottom",[n("SidebarBottom"),t._v(" "),n("Content",{attrs:{"slot-key":"sidebar-bottom"}})])]},proxy:!0},{key:"default",fn:function(e){return[t.$frontmatter.blog&&!1!==t.$themeConfig.blog?n("BlogHome"):t.$frontmatter.home?n("Home"):n("Page",{attrs:{headers:e.headers,"sidebar-items":e.sidebarItems},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("page-top",[n("PageTop"),t._v(" "),n("Content",{attrs:{"slot-key":"page-top"}})])]},proxy:!0},{key:"content-top",fn:function(){return[t._t("content-top",[n("ContentTop"),t._v(" "),n("Content",{attrs:{"slot-key":"content-top"}})])]},proxy:!0},{key:"content-bottom",fn:function(){return[t._t("content-bottom",[n("ContentBottom"),t._v(" "),n("Content",{attrs:{"slot-key":"content-bottom"}})])]},proxy:!0},{key:"bottom",fn:function(){return[t._t("page-bottom",[n("PageBottom"),t._v(" "),n("Content",{attrs:{"slot-key":"page-bottom"}})])]},proxy:!0}],null,!0)})]}}],null,!0)})}),[],!1,null,null,null);e.default=ct.exports}}]); \ No newline at end of file diff --git a/docs/docs/.vuepress/dist/assets/js/vendors~photo-swipe.26feefd6.js b/docs/docs/.vuepress/dist/assets/js/vendors~photo-swipe.26feefd6.js deleted file mode 100644 index 14b656cd..00000000 --- a/docs/docs/.vuepress/dist/assets/js/vendors~photo-swipe.26feefd6.js +++ /dev/null @@ -1,7 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{481:function(e,t,n){var o,i; -/*! PhotoSwipe - v4.1.3 - 2019-01-08 -* http://photoswipe.com -* Copyright (c) 2019 Dmitry Semenov; */void 0===(i="function"==typeof(o=function(){"use strict";return function(e,t,n,o){var i={features:null,bind:function(e,t,n,o){var i=(o?"remove":"add")+"EventListener";t=t.split(" ");for(var a=0;a0&&(a=parseInt(a[1],10))>=1&&a<8&&(n.isOldIOSPhone=!0)}var r=o.match(/Android\s([0-9\.]*)/),l=r?r[1]:0;(l=parseFloat(l))>=1&&(l<4.4&&(n.isOldAndroid=!0),n.androidVersion=l),n.isMobileOpera=/opera mini|opera mobi/i.test(o)}for(var s,u,c=["transform","perspective","animationName"],d=["","webkit","Moz","ms","O"],p=0;p<4;p++){t=d[p];for(var m=0;m<3;m++)s=c[m],u=t+(t?s.charAt(0).toUpperCase()+s.slice(1):s),!n[s]&&u in e&&(n[s]=u);t&&!n.raf&&(t=t.toLowerCase(),n.raf=window[t+"RequestAnimationFrame"],n.raf&&(n.caf=window[t+"CancelAnimationFrame"]||window[t+"CancelRequestAnimationFrame"]))}if(!n.raf){var f=0;n.raf=function(e){var t=(new Date).getTime(),n=Math.max(0,16-(t-f)),o=window.setTimeout((function(){e(t+n)}),n);return f=t+n,o},n.caf=function(e){clearTimeout(e)}}return n.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,i.features=n,n}};i.detectFeatures(),i.features.oldIE&&(i.bind=function(e,t,n,o){t=t.split(" ");for(var i,a=(o?"detach":"attach")+"Event",r=function(){n.handleEvent.call(n)},l=0;lt-1?e-t:e<0?t+e:e},Ie={},Te=function(e,t){return Ie[e]||(Ie[e]=[]),Ie[e].push(t)},Ee=function(e){var t=Ie[e];if(t){var n=Array.prototype.slice.call(arguments);n.shift();for(var o=0;oa.currItem.fitRatio?we||($t(a.currItem,!1,!0),we=!0):we&&($t(a.currItem),we=!1)),_e(te,de.x,de.y,v))},Fe=function(e){e.container&&_e(e.container.style,e.initialPosition.x,e.initialPosition.y,e.initialZoomLevel,e)},ke=function(e,t){t[_]=x+e+"px, 0px"+y},Oe=function(e,t){if(!r.loop&&t){var n=c+(he.x*me-e)/he.x,o=Math.round(e-ct.x);(n<0&&o>0||n>=Kt()-1&&o<0)&&(e=ct.x+o*r.mainScrollEndFriction)}ct.x=e,ke(e,d)},Ae=function(e,t){var n=dt[e]-fe[e];return ce[e]+ue[e]+n-n*(t/g)},Re=function(e,t){e.x=t.x,e.y=t.y,t.id&&(e.id=t.id)},Le=function(e){e.x=Math.round(e.x),e.y=Math.round(e.y)},Ze=null,Pe=function(){Ze&&(i.unbind(document,"mousemove",Pe),i.addClass(e,"pswp--has_mouse"),r.mouseUsed=!0,Ee("mouseUsed")),Ze=setTimeout((function(){Ze=null}),100)},ze=function(e,t){var n=Gt(a.currItem,pe,e);return t&&(ee=n),n},Ne=function(e){return e||(e=a.currItem),e.initialZoomLevel},Ue=function(e){return e||(e=a.currItem),e.w>0?r.maxSpreadZoom:1},Ke=function(e,t,n,o){return o===a.currItem.initialZoomLevel?(n[e]=a.currItem.initialPosition[e],!0):(n[e]=Ae(e,o),n[e]>t.min[e]?(n[e]=t.min[e],!0):n[e]=o)return qe(e),a(n),void(r&&r());a((n-t)*i(l/o)+t),Ye[e].raf=k(u)}};u()},Je={shout:Ee,listen:Te,viewportSize:pe,options:r,isMainScrollAnimating:function(){return ne},getZoomLevel:function(){return v},getCurrentIndex:function(){return c},isDragging:function(){return Y},isZooming:function(){return j},setScrollOffset:function(e,t){fe.x=e,Z=fe.y=t,Ee("updateScrollOffset",fe)},applyZoomPan:function(e,t,n,o){de.x=t,de.y=n,v=e,Me(o)},init:function(){if(!l&&!s){var n;a.framework=i,a.template=e,a.bg=i.getChildByClass(e,"pswp__bg"),A=e.className,l=!0,P=i.detectFeatures(),k=P.raf,O=P.caf,_=P.transform,L=P.oldIE,a.scrollWrap=i.getChildByClass(e,"pswp__scroll-wrap"),a.container=i.getChildByClass(a.scrollWrap,"pswp__container"),d=a.container.style,a.itemHolders=C=[{el:a.container.children[0],wrap:0,index:-1},{el:a.container.children[1],wrap:0,index:-1},{el:a.container.children[2],wrap:0,index:-1}],C[0].el.style.display=C[2].el.style.display="none",function(){if(_){var t=P.perspective&&!F;return x="translate"+(t?"3d(":"("),void(y=P.perspective?", 0px)":")")}_="left",i.addClass(e,"pswp--ie"),ke=function(e,t){t.left=e+"px"},Fe=function(e){var t=e.fitRatio>1?1:e.fitRatio,n=e.container.style,o=t*e.w,i=t*e.h;n.width=o+"px",n.height=i+"px",n.left=e.initialPosition.x+"px",n.top=e.initialPosition.y+"px"},Me=function(){if(te){var e=te,t=a.currItem,n=t.fitRatio>1?1:t.fitRatio,o=n*t.w,i=n*t.h;e.width=o+"px",e.height=i+"px",e.left=de.x+"px",e.top=de.y+"px"}}}(),h={resize:a.updateSize,orientationchange:function(){clearTimeout(z),z=setTimeout((function(){pe.x!==a.scrollWrap.clientWidth&&a.updateSize()}),500)},scroll:Be,keydown:He,click:We};var o=P.isOldIOSPhone||P.isOldAndroid||P.isMobileOpera;for(P.animationName&&P.transform&&!o||(r.showAnimationDuration=r.hideAnimationDuration=0),n=0;n=Kt())&&(c=0),a.currItem=Ut(c),(P.isOldIOSPhone||P.isOldAndroid)&&(ge=!1),e.setAttribute("aria-hidden","false"),r.modal&&(ge?e.style.position="fixed":(e.style.position="absolute",e.style.top=i.getScrollY()+"px")),void 0===Z&&(Ee("initialLayout"),Z=R=i.getScrollY());var u="pswp--open ";for(r.mainClass&&(u+=r.mainClass+" "),r.showHideOpacity&&(u+="pswp--animate_opacity "),u+=F?"pswp--touch":"pswp--notouch",u+=P.animationName?" pswp--css_animation":"",u+=P.svg?" pswp--svg":"",i.addClass(e,u),a.updateSize(),p=-1,ve=null,n=0;n<3;n++)ke((n+p)*he.x,C[n].el.style);L||i.bind(a.scrollWrap,f,a),Te("initialZoomInEnd",(function(){a.setContent(C[0],c-1),a.setContent(C[2],c+1),C[0].el.style.display=C[2].el.style.display="block",r.focus&&e.focus(),i.bind(document,"keydown",a),P.transform&&i.bind(a.scrollWrap,"click",a),r.mouseUsed||i.bind(document,"mousemove",Pe),i.bind(window,"resize scroll orientationchange",a),Ee("bindEvents")})),a.setContent(C[1],c),a.updateCurrItem(),Ee("afterInit"),ge||(w=setInterval((function(){Ge||Y||j||v!==a.currItem.initialZoomLevel||a.updateSize()}),1e3)),i.addClass(e,"pswp--visible")}},close:function(){l&&(l=!1,s=!0,Ee("close"),i.unbind(window,"resize scroll orientationchange",a),i.unbind(window,"scroll",h.scroll),i.unbind(document,"keydown",a),i.unbind(document,"mousemove",Pe),P.transform&&i.unbind(a.scrollWrap,"click",a),Y&&i.unbind(window,m,a),clearTimeout(z),Ee("unbindEvents"),Ht(a.currItem,null,!0,a.destroy))},destroy:function(){Ee("destroy"),Zt&&clearTimeout(Zt),e.setAttribute("aria-hidden","true"),e.className=A,w&&clearInterval(w),i.unbind(a.scrollWrap,f,a),i.unbind(window,"scroll",a),ft(),Xe(),Ie=null},panTo:function(e,t,n){n||(e>ee.min.x?e=ee.min.x:eee.min.y?t=ee.min.y:t=3&&(p+=ve+(ve>0?-3:3),n=3);for(var o=0;o0?(t=C.shift(),C[2]=t,p++,ke((p+2)*he.x,t.el.style),a.setContent(t,c-n+o+1+1)):(t=C.pop(),C.unshift(t),p--,ke(p*he.x,t.el.style),a.setContent(t,c+n-o-1-1));if(te&&1===Math.abs(ve)){var i=Ut(I);i.initialZoomLevel!==v&&(Gt(i,pe),$t(i),Fe(i))}ve=0,a.updateCurrZoomItem(),I=c,Ee("afterChange")}}},updateSize:function(t){if(!ge&&r.modal){var n=i.getScrollY();if(Z!==n&&(e.style.top=n+"px",Z=n),!t&&ye.x===window.innerWidth&&ye.y===window.innerHeight)return;ye.x=window.innerWidth,ye.y=window.innerHeight,e.style.height=ye.y+"px"}if(pe.x=a.scrollWrap.clientWidth,pe.y=a.scrollWrap.clientHeight,Be(),he.x=pe.x+Math.round(pe.x*r.spacing),he.y=pe.y,Oe(he.x*me),Ee("beforeResize"),void 0!==p){for(var o,l,s,u=0;u<3;u++)o=C[u],ke((u+p)*he.x,o.el.style),s=c+u-1,r.loop&&Kt()>2&&(s=Ce(s)),(l=Ut(s))&&(b||l.needsUpdate||!l.bounds)?(a.cleanSlide(l),a.setContent(o,s),1===u&&(a.currItem=l,a.updateCurrZoomItem(!0)),l.needsUpdate=!1):-1===o.index&&s>=0&&a.setContent(o,s),l&&l.container&&(Gt(l,pe),$t(l),Fe(l));b=!1}g=v=a.currItem.initialZoomLevel,(ee=a.currItem.bounds)&&(de.x=ee.center.x,de.y=ee.center.y,Me(!0)),Ee("resize")},zoomTo:function(e,t,n,o,a){t&&(g=v,dt.x=Math.abs(t.x)-de.x,dt.y=Math.abs(t.y)-de.y,Re(ce,de));var r=ze(e,!1),l={};Ke("x",r,l,e),Ke("y",r,l,e);var s=v,u=de.x,c=de.y;Le(l);var d=function(t){1===t?(v=e,de.x=l.x,de.y=l.y):(v=(e-s)*t+s,de.x=(l.x-u)*t+u,de.y=(l.y-c)*t+c),a&&a(t),Me(1===t)};n?$e("customZoomTo",0,1,n,o||i.easing.sine.inOut,d):d(1)}},je={},Qe={},et={},tt={},nt={},ot=[],it={},at=[],rt={},lt=0,st={x:0,y:0},ut=0,ct={x:0,y:0},dt={x:0,y:0},pt={x:0,y:0},mt=function(e,t){return rt.x=Math.abs(e.x-t.x),rt.y=Math.abs(e.y-t.y),Math.sqrt(rt.x*rt.x+rt.y*rt.y)},ft=function(){X&&(O(X),X=null)},ht=function(){Y&&(X=k(ht),Mt())},vt=function(e,t){return!(!e||e===document)&&!(e.getAttribute("class")&&e.getAttribute("class").indexOf("pswp__scroll-wrap")>-1)&&(t(e)?e:vt(e.parentNode,t))},gt={},xt=function(e,t){return gt.prevent=!vt(e.target,r.isClickableElement),Ee("preventDragEvent",e,t,gt),gt.prevent},yt=function(e,t){return t.x=e.pageX,t.y=e.pageY,t.id=e.identifier,t},wt=function(e,t,n){n.x=.5*(e.x+t.x),n.y=.5*(e.y+t.y)},bt=function(){var e=de.y-a.currItem.initialPosition.y;return 1-Math.abs(e/(pe.y/2))},Ct={},It={},Tt=[],Et=function(e){for(;Tt.length>0;)Tt.pop();return M?(se=0,ot.forEach((function(e){0===se?Tt[0]=e:1===se&&(Tt[1]=e),se++}))):e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(Tt[0]=yt(e.touches[0],Ct),e.touches.length>1&&(Tt[1]=yt(e.touches[1],It))):(Ct.x=e.pageX,Ct.y=e.pageY,Ct.id="",Tt[0]=Ct),Tt},Dt=function(e,t){var n,o,i,l,s=de[e]+t[e],u=t[e]>0,c=ct.x+t.x,d=ct.x-it.x;if(n=s>ee.min[e]||see.min[e]&&(n=r.panEndFriction,ee.min[e],o=ee.min[e]-ce[e]),(o<=0||d<0)&&Kt()>1?(l=c,d<0&&c>it.x&&(l=it.x)):ee.min.x!==ee.max.x&&(i=s)):(s0)&&Kt()>1?(l=c,d>0&&ca.currItem.fitRatio&&(de[e]+=t[e]*n)},St=function(e){if(!("mousedown"===e.type&&e.button>0))if(Nt)e.preventDefault();else if(!B||"mousedown"!==e.type){if(xt(e,!0)&&e.preventDefault(),Ee("pointerDown"),M){var t=i.arraySearch(ot,e.pointerId,"id");t<0&&(t=ot.length),ot[t]={x:e.pageX,y:e.pageY,id:e.pointerId}}var n=Et(e),o=n.length;J=null,Xe(),Y&&1!==o||(Y=ie=!0,i.bind(window,m,a),H=le=ae=W=$=V=G=q=!1,oe=null,Ee("firstTouchStart",n),Re(ce,de),ue.x=ue.y=0,Re(tt,n[0]),Re(nt,tt),it.x=he.x*me,at=[{x:tt.x,y:tt.y}],U=N=De(),ze(v,!0),ft(),ht()),!j&&o>1&&!ne&&!$&&(g=v,q=!1,j=G=!0,ue.y=ue.x=0,Re(ce,de),Re(je,n[0]),Re(Qe,n[1]),wt(je,Qe,pt),dt.x=Math.abs(pt.x)-de.x,dt.y=Math.abs(pt.y)-de.y,Q=mt(je,Qe))}},_t=function(e){if(e.preventDefault(),M){var t=i.arraySearch(ot,e.pointerId,"id");if(t>-1){var n=ot[t];n.x=e.pageX,n.y=e.pageY}}if(Y){var o=Et(e);if(oe||V||j)J=o;else if(ct.x!==he.x*me)oe="h";else{var a=Math.abs(o[0].x-tt.x)-Math.abs(o[0].y-tt.y);Math.abs(a)>=10&&(oe=a>0?"h":"v",J=o)}}},Mt=function(){if(J){var e=J.length;if(0!==e)if(Re(je,J[0]),et.x=je.x-tt.x,et.y=je.y-tt.y,j&&e>1){if(tt.x=je.x,tt.y=je.y,!et.x&&!et.y&&function(e,t){return e.x===t.x&&e.y===t.y}(J[1],Qe))return;Re(Qe,J[1]),q||(q=!0,Ee("zoomGestureStarted"));var t=mt(je,Qe),n=Rt(t);n>a.currItem.initialZoomLevel+a.currItem.initialZoomLevel/15&&(le=!0);var o=1,i=Ne(),l=Ue();if(n1&&(o=1),n=i-o*(i/3);else n>l&&((o=(n-l)/(6*i))>1&&(o=1),n=l+o*i);o<0&&(o=0),wt(je,Qe,st),ue.x+=st.x-pt.x,ue.y+=st.y-pt.y,Re(pt,st),de.x=Ae("x",n),de.y=Ae("y",n),H=n>v,v=n,Me()}else{if(!oe)return;if(ie&&(ie=!1,Math.abs(et.x)>=10&&(et.x-=J[0].x-nt.x),Math.abs(et.y)>=10&&(et.y-=J[0].y-nt.y)),tt.x=je.x,tt.y=je.y,0===et.x&&0===et.y)return;if("v"===oe&&r.closeOnVerticalDrag&&"fit"===r.scaleMode&&v===a.currItem.initialZoomLevel){ue.y+=et.y,de.y+=et.y;var u=bt();return W=!0,Ee("onVerticalDrag",u),Se(u),void Me()}!function(e,t,n){if(e-U>50){var o=at.length>2?at.shift():{};o.x=t,o.y=n,at.push(o),U=e}}(De(),je.x,je.y),V=!0,ee=a.currItem.bounds,Dt("x",et)||(Dt("y",et),Le(de),Me())}}},Ft=function(e){if(P.isOldAndroid){if(B&&"mouseup"===e.type)return;e.type.indexOf("touch")>-1&&(clearTimeout(B),B=setTimeout((function(){B=0}),600))}var t;if(Ee("pointerUp"),xt(e,!1)&&e.preventDefault(),M){var n=i.arraySearch(ot,e.pointerId,"id");n>-1&&(t=ot.splice(n,1)[0],navigator.msPointerEnabled?(t.type={4:"mouse",2:"touch",3:"pen"}[e.pointerType],t.type||(t.type=e.pointerType||"mouse")):t.type=e.pointerType||"mouse")}var o,l=Et(e),s=l.length;if("mouseup"===e.type&&(s=0),2===s)return J=null,!0;1===s&&Re(nt,l[0]),0!==s||oe||ne||(t||("mouseup"===e.type?t={x:e.pageX,y:e.pageY,type:"mouse"}:e.changedTouches&&e.changedTouches[0]&&(t={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY,type:"touch"})),Ee("touchRelease",e,t));var u=-1;if(0===s&&(Y=!1,i.unbind(window,m,a),ft(),j?u=0:-1!==ut&&(u=De()-ut)),ut=1===s?De():-1,o=-1!==u&&u<150?"zoom":"swipe",j&&s<2&&(j=!1,1===s&&(o="zoomPointerUp"),Ee("zoomGestureEnded")),J=null,V||q||ne||W)if(Xe(),K||(K=kt()),K.calculateSwipeSpeed("x"),W)if(bt()a.currItem.fitRatio&&Ot(K):Lt())}},kt=function(){var e,t,n={lastFlickOffset:{},lastFlickDist:{},lastFlickSpeed:{},slowDownRatio:{},slowDownRatioReverse:{},speedDecelerationRatio:{},speedDecelerationRatioAbs:{},distanceOffset:{},backAnimDestination:{},backAnimStarted:{},calculateSwipeSpeed:function(o){at.length>1?(e=De()-U+50,t=at[at.length-2][o]):(e=De()-N,t=nt[o]),n.lastFlickOffset[o]=tt[o]-t,n.lastFlickDist[o]=Math.abs(n.lastFlickOffset[o]),n.lastFlickDist[o]>20?n.lastFlickSpeed[o]=n.lastFlickOffset[o]/e:n.lastFlickSpeed[o]=0,Math.abs(n.lastFlickSpeed[o])<.1&&(n.lastFlickSpeed[o]=0),n.slowDownRatio[o]=.95,n.slowDownRatioReverse[o]=1-n.slowDownRatio[o],n.speedDecelerationRatio[o]=1},calculateOverBoundsAnimOffset:function(e,t){n.backAnimStarted[e]||(de[e]>ee.min[e]?n.backAnimDestination[e]=ee.min[e]:de[e]30&&(u||t.lastFlickOffset.x>20)?o=-1:s<-30&&(u||t.lastFlickOffset.x<-20)&&(o=1)}o&&((c+=o)<0?(c=r.loop?Kt()-1:0,l=!0):c>=Kt()&&(c=r.loop?0:Kt()-1,l=!0),l&&!r.loop||(ve+=o,me-=o,n=!0));var d,p=he.x*me,m=Math.abs(p-ct.x);return n||p>ct.x==t.lastFlickSpeed.x>0?(d=Math.abs(t.lastFlickSpeed.x)>0?m/Math.abs(t.lastFlickSpeed.x):333,d=Math.min(d,400),d=Math.max(d,250)):d=333,lt===c&&(n=!1),ne=!0,Ee("mainScrollAnimStart"),$e("mainScroll",ct.x,p,d,i.easing.cubic.out,Oe,(function(){Xe(),ne=!1,lt=-1,(n||lt!==c)&&a.updateCurrItem(),Ee("mainScrollAnimComplete")})),n&&a.updateCurrItem(!0),n},Rt=function(e){return 1/Q*e*g},Lt=function(){var e=v,t=Ne(),n=Ue();vn&&(e=n);var o,r=re;return ae&&!H&&!le&&v1||navigator.msMaxTouchPoints>1),a.likelyTouchDevice=F,h[T]=St,h[E]=_t,h[D]=Ft,S&&(h[S]=h[D]),P.touch&&(f+=" mousedown",m+=" mousemove mouseup",h.mousedown=h[T],h.mousemove=h[E],h.mouseup=h[D]),F||(r.allowPanToNext=!1)}}});var Zt,Pt,zt,Nt,Ut,Kt,Ht=function(t,n,o,l){var s;Zt&&clearTimeout(Zt),Nt=!0,zt=!0,t.initialLayout?(s=t.initialLayout,t.initialLayout=null):s=r.getThumbBoundsFn&&r.getThumbBoundsFn(c);var d,p,m=o?r.hideAnimationDuration:r.showAnimationDuration,f=function(){qe("initialZoom"),o?(a.template.removeAttribute("style"),a.bg.removeAttribute("style")):(Se(1),n&&(n.style.display="block"),i.addClass(e,"pswp--animated-in"),Ee("initialZoom"+(o?"OutEnd":"InEnd"))),l&&l(),Nt=!1};if(!m||!s||void 0===s.x)return Ee("initialZoom"+(o?"Out":"In")),v=t.initialZoomLevel,Re(de,t.initialPosition),Me(),e.style.opacity=o?0:1,Se(1),void(m?setTimeout((function(){f()}),m):f());d=u,p=!a.currItem.src||a.currItem.loadError||r.showHideOpacity,t.miniImg&&(t.miniImg.style.webkitBackfaceVisibility="hidden"),o||(v=s.w/t.w,de.x=s.x,de.y=s.y-R,a[p?"template":"bg"].style.opacity=.001,Me()),Ve("initialZoom"),o&&!d&&i.removeClass(e,"pswp--animated-in"),p&&(o?i[(d?"remove":"add")+"Class"](e,"pswp--animate_opacity"):setTimeout((function(){i.addClass(e,"pswp--animate_opacity")}),30)),Zt=setTimeout((function(){if(Ee("initialZoom"+(o?"Out":"In")),o){var n=s.w/t.w,a={x:de.x,y:de.y},r=v,l=re,u=function(t){1===t?(v=n,de.x=s.x,de.y=s.y-Z):(v=(n-r)*t+r,de.x=(s.x-a.x)*t+a.x,de.y=(s.y-Z-a.y)*t+a.y),Me(),p?e.style.opacity=1-t:Se(l-t*l)};d?$e("initialZoom",0,1,m,i.easing.cubic.out,u,f):(u(1),Zt=setTimeout(f,m+20))}else v=t.initialZoomLevel,Re(de,t.initialPosition),Me(),Se(1),p?e.style.opacity=1:Se(1),Zt=setTimeout(f,m+20)}),o?25:90)},Wt={},Bt=[],Yt={index:0,errorMsg:'
The image could not be loaded.
',forceProgressiveLoading:!1,preload:[1,1],getNumItemsFn:function(){return Pt.length}},Gt=function(e,t,n){if(e.src&&!e.loadError){var o=!n;if(o&&(e.vGap||(e.vGap={top:0,bottom:0}),Ee("parseVerticalMargin",e)),Wt.x=t.x,Wt.y=t.y-e.vGap.top-e.vGap.bottom,o){var i=Wt.x/e.w,a=Wt.y/e.h;e.fitRatio=i1&&(n=1),e.initialZoomLevel=n,e.bounds||(e.bounds={center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}})}if(!n)return;return function(e,t,n){var o=e.bounds;o.center.x=Math.round((Wt.x-t)/2),o.center.y=Math.round((Wt.y-n)/2)+e.vGap.top,o.max.x=t>Wt.x?Math.round(Wt.x-t):o.center.x,o.max.y=n>Wt.y?Math.round(Wt.y-n)+e.vGap.top:o.center.y,o.min.x=t>Wt.x?0:o.center.x,o.min.y=n>Wt.y?e.vGap.top:o.center.y}(e,e.w*n,e.h*n),o&&n===e.initialZoomLevel&&(e.initialPosition=e.bounds.center),e.bounds}return e.w=e.h=0,e.initialZoomLevel=e.fitRatio=1,e.bounds={center:{x:0,y:0},max:{x:0,y:0},min:{x:0,y:0}},e.initialPosition=e.bounds.center,e.bounds},qt=function(e,t,n,o,i,r){t.loadError||o&&(t.imageAppended=!0,$t(t,o,t===a.currItem&&we),n.appendChild(o),r&&setTimeout((function(){t&&t.loaded&&t.placeholder&&(t.placeholder.style.display="none",t.placeholder=null)}),500))},Vt=function(e){e.loading=!0,e.loaded=!1;var t=e.img=i.createEl("pswp__img","img"),n=function(){e.loading=!1,e.loaded=!0,e.loadComplete?e.loadComplete(e):e.img=null,t.onload=t.onerror=null,t=null};return t.onload=n,t.onerror=function(){e.loadError=!0,n()},t.src=e.src,t},Xt=function(e,t){if(e.src&&e.loadError&&e.container)return t&&(e.container.innerHTML=""),e.container.innerHTML=r.errorMsg.replace("%url%",e.src),!0},$t=function(e,t,n){if(e.src){t||(t=e.container.lastChild);var o=n?e.w:Math.round(e.w*e.fitRatio),i=n?e.h:Math.round(e.h*e.fitRatio);e.placeholder&&!e.loaded&&(e.placeholder.style.width=o+"px",e.placeholder.style.height=i+"px"),t.style.width=o+"px",t.style.height=i+"px"}},Jt=function(){if(Bt.length){for(var e,t=0;t=0,i=Math.min(n[0],Kt()),l=Math.min(n[1],Kt());for(t=1;t<=(o?l:i);t++)a.lazyLoadItem(c+t);for(t=1;t<=(o?i:l);t++)a.lazyLoadItem(c-t)})),Te("initialLayout",(function(){a.currItem.initialLayout=r.getThumbBoundsFn&&r.getThumbBoundsFn(c)})),Te("mainScrollAnimComplete",Jt),Te("initialZoomInEnd",Jt),Te("destroy",(function(){for(var e,t=0;t=0&&void 0!==Pt[e]&&Pt[e]},allowProgressiveImg:function(){return r.forceProgressiveLoading||!F||r.mouseUsed||screen.width>1200},setContent:function(e,t){r.loop&&(t=Ce(t));var n=a.getItemAt(e.index);n&&(n.container=null);var o,s=a.getItemAt(t);if(s){Ee("gettingData",t,s),e.index=t,e.item=s;var u=s.container=i.createEl("pswp__zoom-wrap");if(!s.src&&s.html&&(s.html.tagName?u.appendChild(s.html):u.innerHTML=s.html),Xt(s),Gt(s,pe),!s.src||s.loadError||s.loaded)s.src&&!s.loadError&&((o=i.createEl("pswp__img","img")).style.opacity=1,o.src=s.src,$t(s,o),qt(0,s,u,o));else{if(s.loadComplete=function(n){if(l){if(e&&e.index===t){if(Xt(n,!0))return n.loadComplete=n.img=null,Gt(n,pe),Fe(n),void(e.index===c&&a.updateCurrZoomItem());n.imageAppended?!Nt&&n.placeholder&&(n.placeholder.style.display="none",n.placeholder=null):P.transform&&(ne||Nt)?Bt.push({item:n,baseDiv:u,img:n.img,index:t,holder:e,clearPlaceholder:!0}):qt(0,n,u,n.img,0,!0)}n.loadComplete=null,n.img=null,Ee("imageLoadComplete",t,n)}},i.features.transform){var d="pswp__img pswp__img--placeholder";d+=s.msrc?"":" pswp__img--placeholder--blank";var p=i.createEl(d,s.msrc?"img":"");s.msrc&&(p.src=s.msrc),$t(s,p),u.appendChild(p),s.placeholder=p}s.loading||Vt(s),a.allowProgressiveImg()&&(!zt&&P.transform?Bt.push({item:s,baseDiv:u,img:s.img,index:t,holder:e}):qt(0,s,u,s.img,0,!0))}zt||t!==c?Fe(s):(te=u.style,Ht(s,o||s.img)),e.el.innerHTML="",e.el.appendChild(u)}else e.el.innerHTML=""},cleanSlide:function(e){e.img&&(e.img.onload=e.img.onerror=null),e.loaded=e.loading=e.img=e.imageAppended=!1}}});var jt,Qt,en={},tn=function(e,t,n){var o=document.createEvent("CustomEvent"),i={origEvent:e,target:e.target,releasePoint:t,pointerType:n||"touch"};o.initCustomEvent("pswpTap",!0,!0,i),e.target.dispatchEvent(o)};be("Tap",{publicMethods:{initTap:function(){Te("firstTouchStart",a.onTapStart),Te("touchRelease",a.onTapRelease),Te("destroy",(function(){en={},jt=null}))},onTapStart:function(e){e.length>1&&(clearTimeout(jt),jt=null)},onTapRelease:function(e,t){var n,o;if(t&&!V&&!G&&!Ge){var a=t;if(jt&&(clearTimeout(jt),jt=null,n=a,o=en,Math.abs(n.x-o.x)<25&&Math.abs(n.y-o.y)<25))return void Ee("doubleTap",a);if("mouse"===t.type)return void tn(e,t,"mouse");if("BUTTON"===e.target.tagName.toUpperCase()||i.hasClass(e.target,"pswp__single-tap"))return void tn(e,t);Re(en,a),jt=setTimeout((function(){tn(e,t),jt=null}),300)}}}}),be("DesktopZoom",{publicMethods:{initDesktopZoom:function(){L||(F?Te("mouseUsed",(function(){a.setupDesktopZoom()})):a.setupDesktopZoom(!0))},setupDesktopZoom:function(t){Qt={};var n="wheel mousewheel DOMMouseScroll";Te("bindEvents",(function(){i.bind(e,n,a.handleMouseWheel)})),Te("unbindEvents",(function(){Qt&&i.unbind(e,n,a.handleMouseWheel)})),a.mouseZoomedIn=!1;var o,r=function(){a.mouseZoomedIn&&(i.removeClass(e,"pswp--zoomed-in"),a.mouseZoomedIn=!1),v<1?i.addClass(e,"pswp--zoom-allowed"):i.removeClass(e,"pswp--zoom-allowed"),l()},l=function(){o&&(i.removeClass(e,"pswp--dragging"),o=!1)};Te("resize",r),Te("afterChange",r),Te("pointerDown",(function(){a.mouseZoomedIn&&(o=!0,i.addClass(e,"pswp--dragging"))})),Te("pointerUp",l),t||r()},handleMouseWheel:function(e){if(v<=a.currItem.fitRatio)return r.modal&&(!r.closeOnScroll||Ge||Y?e.preventDefault():_&&Math.abs(e.deltaY)>2&&(u=!0,a.close())),!0;if(e.stopPropagation(),Qt.x=0,"deltaX"in e)1===e.deltaMode?(Qt.x=18*e.deltaX,Qt.y=18*e.deltaY):(Qt.x=e.deltaX,Qt.y=e.deltaY);else if("wheelDelta"in e)e.wheelDeltaX&&(Qt.x=-.16*e.wheelDeltaX),e.wheelDeltaY?Qt.y=-.16*e.wheelDeltaY:Qt.y=-.16*e.wheelDelta;else{if(!("detail"in e))return;Qt.y=e.detail}ze(v,!0);var t=de.x-Qt.x,n=de.y-Qt.y;(r.modal||t<=ee.min.x&&t>=ee.max.x&&n<=ee.min.y&&n>=ee.max.y)&&e.preventDefault(),a.panTo(t,n)},toggleDesktopZoom:function(t){t=t||{x:pe.x/2+fe.x,y:pe.y/2+fe.y};var n=r.getDoubleTapZoom(!0,a.currItem),o=v===n;a.mouseZoomedIn=!o,a.zoomTo(o?a.currItem.initialZoomLevel:n,t,333),i[(o?"remove":"add")+"Class"](e,"pswp--zoomed-in")}}});var nn,on,an,rn,ln,sn,un,cn,dn,pn,mn,fn,hn={history:!0,galleryUID:1},vn=function(){return mn.hash.substring(1)},gn=function(){nn&&clearTimeout(nn),an&&clearTimeout(an)},xn=function(){var e=vn(),t={};if(e.length<5)return t;var n,o=e.split("&");for(n=0;n-1&&"&"===(un=un.substring(0,t)).slice(-1)&&(un=un.slice(0,-1)),setTimeout((function(){l&&i.bind(window,"hashchange",a.onHashChange)}),40)}},onHashChange:function(){if(vn()===un)return dn=!0,void a.close();rn||(ln=!0,a.goTo(xn().pid),ln=!1)},updateURL:function(){gn(),ln||(cn?nn=setTimeout(yn,800):yn())}}}),i.extend(a,Je)}})?o.call(t,n,t,e):o)||(e.exports=i)},482:function(e,t,n){var o,i; -/*! PhotoSwipe Default UI - 4.1.3 - 2019-01-08 -* http://photoswipe.com -* Copyright (c) 2019 Dmitry Semenov; */void 0===(i="function"==typeof(o=function(){"use strict";return function(e,t){var n,o,i,a,r,l,s,u,c,d,p,m,f,h,v,g,x,y,w=this,b=!1,C=!0,I=!0,T={barsSize:{top:44,bottom:"auto"},closeElClasses:["item","caption","zoom-wrap","ui","top-bar"],timeToIdle:4e3,timeToIdleOutside:1e3,loadingIndicatorDelay:1e3,addCaptionHTMLFn:function(e,t){return e.title?(t.children[0].innerHTML=e.title,!0):(t.children[0].innerHTML="",!1)},closeEl:!0,captionEl:!0,fullscreenEl:!0,zoomEl:!0,shareEl:!0,counterEl:!0,arrowEl:!0,preloaderEl:!0,tapToClose:!1,tapToToggleControls:!0,clickToCloseNonZoomable:!0,shareButtons:[{id:"facebook",label:"Share on Facebook",url:"https://www.facebook.com/sharer/sharer.php?u={{url}}"},{id:"twitter",label:"Tweet",url:"https://twitter.com/intent/tweet?text={{text}}&url={{url}}"},{id:"pinterest",label:"Pin it",url:"http://www.pinterest.com/pin/create/button/?url={{url}}&media={{image_url}}&description={{text}}"},{id:"download",label:"Download image",url:"{{raw_image_url}}",download:!0}],getImageURLForShare:function(){return e.currItem.src||""},getPageURLForShare:function(){return window.location.href},getTextForShare:function(){return e.currItem.title||""},indexIndicatorSep:" / ",fitControlsWidth:1200},E=function(e){if(g)return!0;e=e||window.event,v.timeToIdle&&v.mouseUsed&&!c&&R();for(var n,o,i=(e.target||e.srcElement).getAttribute("class")||"",a=0;a-1&&(n.onTap(),o=!0);if(o){e.stopPropagation&&e.stopPropagation(),g=!0;var r=t.features.isOldAndroid?600:30;setTimeout((function(){g=!1}),r)}},D=function(e,n,o){t[(o?"add":"remove")+"Class"](e,"pswp__"+n)},S=function(){var e=1===v.getNumItemsFn();e!==h&&(D(o,"ui--one-slide",e),h=e)},_=function(){D(s,"share-modal--hidden",I)},M=function(){return(I=!I)?(t.removeClass(s,"pswp__share-modal--fade-in"),setTimeout((function(){I&&_()}),300)):(_(),setTimeout((function(){I||t.addClass(s,"pswp__share-modal--fade-in")}),30)),I||k(),!1},F=function(t){var n=(t=t||window.event).target||t.srcElement;return e.shout("shareLinkClick",t,n),!(!n.href||!n.hasAttribute("download")&&(window.open(n.href,"pswp_share","scrollbars=yes,resizable=yes,toolbar=no,location=yes,width=550,height=420,top=100,left="+(window.screen?Math.round(screen.width/2-275):100)),I||M(),1))},k=function(){for(var e,t,n,o,i="",a=0;a