Trang chủ Blog [VWS 2019] Toàn cảnh bảo mật trong kỷ nguyên dịch vụ đám mây [VWS 2019] Toàn cảnh bảo mật trong kỷ nguyên dịch vụ đám mây 6 phút để đọc
18/12/2019 LinhDTM
Storyteller in the tech & cybersecurity space, bringing five years’ expertise in turning complex ideas into persuasive, memorable content. Eternally curious about new technologies and committed to staying ahead of the curve in security trends and threat intelligence.
Reading Time: 6 minutes
Vietnam Web Summit là một sự kiện thường niên diễn ra tại Hồ Chí Minh và Hà Nội, giúp các doanh nghiệp tiếp cận với những xu hướng – công nghệ mới nhất trên thị trường. Đến với VWM 2019 dưới tư cách diễn giả khách mời, chuyên gia Nguyễn Hữu Trung đã có bài chia sẻ về “Security in the age of cloud services ” (tạm dịch: Toàn cảnh bảo mật trong kỷ nguyên dịch vụ đám mây). Phần trình bày tập trung chỉ ra các vấn đề bảo mật mà doanh nghiệp gặp phải khi triển khai các dịch vụ & hạ tầng đám mây. Hãy cùng điểm qua những ý chính trong bài diễn thuyết, cùng với các lưu ý cho doanh nghiệp khi triển khai sản phẩm trên hạ tầng cloud.
VỀ DIỄN GIẢ
Nguyễn Hữu Trung (TrungNH ) là Đồng sáng lập & Giám đốc công nghệ của Công ty cổ phần CyStack Việt Nam , sáng lập nền tảng WhiteHub Bug Bounty . Với 7 năm nghiên cứu chuyên sâu trong lĩnh vực an ninh mạng, Trung đã có nhiều công trình nghiên cứu và phát hiện lỗ hổng nổi bật, và là một trong những nhà nghiên cứu được vinh danh bởi các tập đoàn lớn trên thế giới như Microsoft, HP, Deloitte, D-link…
Trung cũng là tác giả nhiều nhiều bài phân tích chuyên sâu về bảo mật, an toàn thông tin được quốc tế đón nhận. Ngoài ra, thông qua nền tảng WhiteHub, anh cũng giúp nhiều doanh nghiệp Việt tăng cường bảo mật cho sản phẩm công nghệ của họ thông qua các chương trình Bug Bounty .
Bài diễn thuyết tại VWS 2019 được chia thành 3 phần:
AWS : các vấn đề bảo mật khi triển khai và sử dụng các dịch vụ đám mây của Amazon. Doanh nghiệp cần tránh những lỗi bảo mật cơ bản nào khi triển khai và vận hành hệ thống?
Docker : các vấn đề bảo mật khi sử dụng docker & mẹo bảo mật hữu ích.
Services exposed : những dịch vụ đám mây phổ biến dễ bị lộ dữ liệu trong quá trình vận hành.
AWS
Bản thân các dịch vụ mà AWS cung cấp rất an toàn. Theo khảo sát, một trong những lý do chính dẫn tới các vụ vi phạm dữ liệu của dịch vụ AWS là do lỗi vận hành hệ thống của đội ngũ CNTT.
Cấu hình sai tài nguyên đám mây là nguyên nhân hàng đầu của vi phạm dữ liệu, có thể cho phép xóa hoặc sửa đổi tài nguyên và gián đoạn dịch vụ.
Theo CSA Top Threats to Cloud Computing: Egregious Eleven
Dưới đây là các vec-tơ tấn công AWS mà tin tặc có thể nhắm đến:
IAM
Các dịch vụ (Services)
Network
Instance (Máy ảo, EC2)
Ứng dụng tùy biến & phần mềm bên thứ ba.
Các sai lầm phổ biến với AWS:
Sử dụng AWS access key không đúng cách
Sai lầm đầu tiên trong việc quản trị hệ thống cloud là tạo access keys cho root users. Hành động này có thể gây ra những rủi ro bảo mật nghiêm trọng, bởi vì:
Thông tin của root users cho phép toàn quyền truy cập tới tất cả tài nguyên trong tài khoản; và
Mất key đồng nghĩa với mất toàn bộ dữ liệu.
Giải pháp: sử dụng quyền truy cập tạm thời bằng IAM thay vì tạo ra các access key dài hạn.
Quản lý IAM access key an toàn:
Không nhúng access key trực tiếp vào code, sử dụng file credential riêng hoặc các biến environment;
Sử dụng access key khác nhau cho những ứng dụng khác nhau;
Thay đổi access key thường xuyên
Xóa các key không còn sử dụng
Cài đặt bảo mật nhiều lớp cho những dịch vụ thiết yếu nhất của bạn.
Cấu hình sai IAM policy
IAM là dịch vụ cốt lõi giúp quản trị quyền truy cập trong hệ sinh thái AWS. Cấu hình sai IAM policy là nguyên nhân chính dẫn đến các lỗ hổng bảo mật: leo thang đặc quyền và data exfiltration.
AWS S3 bucket
Mặc dù là một trong những dịch vụ tuyệt vời nhất của AWS, nhưng hầu hết nguyên nhân gây rò rỉ dữ liệu liên quan tới AWS, đều tới từ việc cấu hình sai S3 buckets.
7% S3 buckets trên toàn thế giới được thiết lập quyền truy cập công khai không giới hạn.
BleepingComputer
Cấu hình sai S3 khiến hacker có thể:
Có được quyền truy cập và đọc files lưu trữ trong S3 bucket;
write/upload files lên S3 bucket;
Thay đổi quyền truy cập và đổi nội dung của tất cả các files.
S3 sub-domain takeover
Trong phần này, diễn giả trình bày về một lỗ hổng phát sinh khi sử dụng tính năng tạo website tĩnh trên S3 (static website hosting). Đây là một tính năng tuyệt vời của S3 cho phép người dùng host một domain phụ (dưới dạng web tĩnh) và lưu trữ nội dung hoàn toàn miễn phí. Tuy nhiên, chỉ cần một sai lầm nhỏ trong việc quản lý bản ghi DNS cũng có thể khiến website được tạo trên S3 bị hacker chiếm đoạt và thay đổi nội dung.
Đặc biệt hơn, không chỉ những doanh nghiệp nhỏ, mà cả Microsoft, Google và nhiều tập đoàn lớn khác cũng mắc phải những sai lầm tưởng chừng đơn giản nhưng rất nguy hiểm này trong quá trình bảo mật website .
Các vấn đề bảo mật của Serverless
Nhiều người có suy nghĩ, không phải quản lý server thì sẽ không có rủi ro. Đây là một lầm tưởng phổ biến.
Ngay cả khi bạn sử dụng FaaS (Function as a Service) và không phải thiết lập cũng như quản lý bất kỳ một máy chủ nào, bạn vẫn đối mặt với hàng loạt các nguy cơ bị tấn công như:
Injection
Broken authentication (vượt qua cơ chế xác thực)
Insecure deployment settings (deploy không an toàn)
Misuse of permissions and roles (lỗi trong việc phân quyền)
Insufficient logging (không ghi log ứng dụng)
Insecure storing of app secrets (lưu trữ thông tin nhạy cảm không an toàn)
DoS attack and financial exhaustion (tấn công từ chối dịch vụ)
Improper exception handling (quản lý ngoại lệ không hợp lý)
Docker
Không còn xa lạ với các nhà phát triển phần mềm, docker giúp triển khai các ứng dụng Linux, Windows vào trong các container ảo hóa. Tuy nhiên, nếu thực thi không đúng cách, các nhà phát triển sẽ đối mặt với nhiều rủi ro bảo mật nảy sinh từ việc sử dụng công nghệ này. Dưới đây là lời khuyên của diễn giả:
DON’T
Diễn giả nhấn mạnh lỗi sai cơ bản mà bạn không nên mắc phải khi sử dụng công nghệ docker:
Cấp toàn bộ quyền cho một container (privilege mode). Điều này dẫn tới container có quyền thực thi tương đương với host, và đây là một rủi ro an ninh với nhà phát triển nếu như tin tặc xâm nhập được vào container.
DO
Để tăng cường bảo mật khi phát triển sản phẩm với docker, dưới đây là ba điều bạn nên làm:
Phân quyền hợp lý
Sử dụng chế độ Read-only
Giới hạn tài nguyên cho Docker để chống tấn công DDoS
Hướng dẫn chi tiết có trong tài liệu được chia sẻ .
Services exposed
Trong phần này, diễn giả phân tích một số dịch vụ phổ biến có khả năng bị lộ lọt thông tin nhạy cảm thông qua một số sai lầm trong cấu hình, chẳng hạn
Kurbernetes, dẫn chứng là sự kiện dịch vụ đám mây của Tesla bị hack và dùng cho malware đào tiền ảo (crypto-currency mining).
Kibana
Elastic
CyStack blog Mẹo, tin tức, hướng dẫn và các best practice độc quyền của CyStack
Xem tất cả
Đăng ký nhận bản tin của chúng tôi Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất
Đăng ký nhận Newsletter Nhận các nội dung hữu ích mới nhất
"<!DOCTYPE html>\n<html>\n <head>\n <title>Sign in ・ Cloudflare Access</title>\n <meta charset=\"utf-8\" />\n <meta name=\"robots\" content=\"noindex\" />\n <meta name=\"viewport\" content=\"initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width\" />\n <article id=\"data\"\n data-auto-redirect-to-identity=\"false\"\n data-auto-redirect-url=\"\"\n data-message=\"\">\n </article>\n <style>*{-webkit-box-sizing:inherit;box-sizing:inherit}body,html{min-height:100vh}html{background:#f7f7f8;text-align:center;text-rendering:optimizeLegibility;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";line-height:1.5;word-wrap:break-word;-webkit-box-sizing:border-box;box-sizing:border-box;background:#003d7b;color:#4f566b}.Content,body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}body{padding:32px 8px;margin:0}.Content{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:32px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (max-width:768px){.Content{padding:0;margin:32px 0}}.AuthBox{max-width:100%;background:#fff;border:1px solid #eaebeb;-webkit-box-shadow:0 4px 8px rgba(146,151,155,.15);box-shadow:0 4px 8px rgba(146,151,155,.15);padding-top:2em;width:36em}.base_AccessLogo{margin-bottom:1em}.base_TeamsLogo{padding-top:1em;padding-bottom:2em}@media only screen and (max-width:420px) and (pointer:coarse){.base_AccessLogo{margin-top:1em}.base_TeamsLogo{padding:1em 0}}.Content{margin-top:8px}.AuthBox{border-radius:5px;margin-top:0;margin-bottom:0}.AuthBox .AuthBox-error-box-footer{border-radius:5px 0 .5em .5em;background:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.15)}.AuthBox .AuthBoxRow--name{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.AuthBox-RequestCode{border-bottom-left-radius:5px;border-bottom-right-radius:5px;padding-bottom:2.5em}.AuthBox-RequestCode__idpsExist{background:#f7f7f8}.AuthBox-error-box-footer{border:0;border-radius:5px;margin-bottom:2rem}.ErrorBlock,.ErrorBlock-icon{display:-webkit-box;display:-ms-flexbox;display:flex}.ErrorBlock-icon{width:2.25em;height:2.25em;margin-right:1.25em}.ErrorBlock-icon>svg{display:block;height:100%;width:100%}.ErrorBlock-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.ErrorBlock-header-text{font-size:1.4em;margin-bottom:.5em}.JSONBlock{display:block;font-size:.9em;margin:0;padding:1.5em;font-family:Monaco,\"Bitstream Vera Sans Mono\",\"Lucida Console\",Terminal,monospace;overflow-x:scroll;-webkit-overflow-scrolling:touch;color:rgba(0,0,0,.6)}.AuthBox-text{color:#4a4a4a;font-size:1.25em;font-weight:600;padding-top:1em;margin-bottom:24px}.AuthServiceLogin .AuthServiceLogin-row{padding-bottom:1em}.AuthFormLogin-row{text-align:left;margin:auto;max-width:22em;padding:1em 8px 0}.Footer-text,.Header-text{padding:3em 1em 1em;font-size:12px;line-height:18px}.Footer-text{padding:1em}.Footer-text span{white-space:pre-line}label{display:block;font-weight:600;margin-bottom:.5em}.Button{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;cursor:pointer;text-decoration:none;font:inherit;color:#fff;background:#333;padding:.5em 0;border:0;margin:0;border-radius:5px}.Button.Button-uses-org-theme-accent-color{background-color:#2c7cb0;padding:0 8px;width:100%}.Button:hover{-webkit-box-shadow:inset 0 0 0 999em rgba(255,255,255,.2);box-shadow:inset 0 0 0 999em rgba(255,255,255,.2)}.Button.Button-is-juicy{border-radius:5px;padding-top:.75em;padding-bottom:.75em;max-width:14em;font-weight:300}.Button.Button-is-block{display:block;margin:auto}.Button.Button-is-auth{background-color:#f7f7f8;border:1px solid #d5d7d8;color:inherit;text-align:left;min-height:55px;margin:0 3.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:inherit;flex-wrap:inherit;padding-left:.5em}.Button.Button-is-auth .Button-auth-service-icon{width:2.8em;height:auto;padding:.5em;color:#1d1f20;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.Button.Button-is-auth .Button-auth-service-icon>svg{fill:currentColor;display:block;min-width:25px;width:25px;height:25px}.Button.Button-uses-org-theme-accent-color{margin:0;max-width:unset}.AuthBox-messages{max-width:36em}.Button.Button-is-auth .Button-auth-service-icon,.Message,.RayID{display:-webkit-box;display:-ms-flexbox;display:flex}.Message{-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.9em;overflow:hidden;margin-bottom:1em;border-radius:5px;padding:.5em 1em;text-align:left}.Message svg{height:1em;width:1em;margin-right:.5em}.Message.Message-is-warning{background:#fcf0f2;color:#711423;border:1px solid #f3bac3}.Message.Message-is-success{background:#a6eac9;color:#1c422b;border:1px solid #b0ddc2}.RayID{padding:0;text-align:center;background:#dfbd9f}.RayID.RayID-Title,.RayID.RayID-Value{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:1em;display:inline-block}.RayID.RayID-Value{background:#e7c9af;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-family:Monaco,\"Bitstream Vera Sans Mono\",\"Lucida Console\",Terminal,monospace}.StandardInput{position:relative;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;text-align:left;font:inherit;color:\"#333333\";padding:.5em 1em;border:1px solid #cacaca;margin:0;border-radius:5px}.StandardInput:focus{outline:0;border-color:#777}.StandardInput.StandardInput-is-block{display:block;font-size:1em;width:100%}.StandardInput.StandardInput-is-code{font-family:Monaco,\"Bitstream Vera Sans Mono\",\"Lucida Console\",Terminal,monospace}.StandardInput.StandardInput-is-entry-code{font-size:20px}.StandardInput:-moz-placeholder,.StandardInput::-webkit-input-placeholder{font-family:inherit}.OrgAvatarLink{display:block;text-decoration:none;color:inherit}.OrgAvatarLink-logo img{margin-bottom:.5em}.App-name,.OrgAvatarLink-title{text-align:center;font-weight:200}.OrgAvatarLink-title{color:#4e5255;font-size:.8em}.App-name{font-size:1.5em}@media screen and (max-width:650px){.Button.Button-is-auth{margin:0 8px}.AuthFormLogin .AuthFormLogin-row{width:auto}.Content{margin:8px 0}}</style>\n\n <!-- URL polyfill for IE11 -->\n <script>!function(e){\"use strict\";function t(t){return!!t&&(\"Symbol\"in e&&\"iterator\"in e.Symbol&&\"function\"==typeof t[Symbol.iterator]||!!Array.isArray(t))}function n(e){return\"from\"in Array?Array.from(e):Array.prototype.slice.call(e)}!function(){var r,a=e.URL;try{if(a){if(\"searchParams\"in(r=new e.URL(\"http://example.com\")))return;\"href\"in r||(r=void 0)}}catch(e){}function i(e){var t=\"\",n=!0;return e.forEach(function(e){var r=encodeURIComponent(e.name),a=encodeURIComponent(e.value);n||(t+=\"&\"),t+=r+\"=\"+a,n=!1}),t.replace(/%20/g,\"+\")}function o(e,t){var n=e.split(\"&\");t&&-1===n[0].indexOf(\"=\")&&(n[0]=\"=\"+n[0]);var r=[];n.forEach(function(e){if(0!==e.length){var t=e.indexOf(\"=\");if(-1!==t)var n=e.substring(0,t),a=e.substring(t+1);else n=e,a=\"\";n=n.replace(/\\+/g,\" \"),a=a.replace(/\\+/g,\" \"),r.push({name:n,value:a})}});var a=[];return r.forEach(function(e){a.push({name:decodeURIComponent(e.name),value:decodeURIComponent(e.value)})}),a}function u(e){var r=this;this._list=[],null==e||(e instanceof u?this._list=o(String(e)):\"object\"==typeof e&&t(e)?n(e).forEach(function(e){if(!t(e))throw TypeError();var a=n(e);if(2!==a.length)throw TypeError();r._list.push({name:String(a[0]),value:String(a[1])})}):\"object\"==typeof e&&e?Object.keys(e).forEach(function(t){r._list.push({name:String(t),value:String(e[t])})}):(\"?\"===(e=String(e)).substring(0,1)&&(e=e.substring(1)),this._list=o(e))),this._url_object=null,this._setList=function(e){a||(r._list=e)};var a=!1;this._update_steps=function(){a||(a=!0,r._url_object&&(\"about:\"===r._url_object.protocol&&-1!==r._url_object.pathname.indexOf(\"?\")&&(r._url_object.pathname=r._url_object.pathname.split(\"?\")[0]),r._url_object.search=i(r._list),a=!1))}}function l(e,t){var n=0;this.next=function(){if(n>=e.length)return{done:!0,value:void 0};var r=e[n++];return{done:!1,value:\"key\"===t?r.name:\"value\"===t?r.value:[r.name,r.value]}}}function c(t,n){if(!(this instanceof e.URL))throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator.\");n&&(t=function(){if(r)return new a(t,n).href;var e;try{var i;if(\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini)?((e=document.createElement(\"iframe\")).style.display=\"none\",document.documentElement.appendChild(e),i=e.contentWindow.document):document.implementation&&document.implementation.createHTMLDocument?i=document.implementation.createHTMLDocument(\"\"):document.implementation&&document.implementation.createDocument?((i=document.implementation.createDocument(\"http://www.w3.org/1999/xhtml\",\"html\",null)).documentElement.appendChild(i.createElement(\"head\")),i.documentElement.appendChild(i.createElement(\"body\"))):window.ActiveXObject&&((i=new window.ActiveXObject(\"htmlfile\")).write(\"<head></head><body></body>\"),i.close()),!i)throw Error(\"base not supported\");var o=i.createElement(\"base\");o.href=n,i.getElementsByTagName(\"head\")[0].appendChild(o);var u=i.createElement(\"a\");return u.href=t,u.href}finally{e&&e.parentNode.removeChild(e)}}());var i=function(e){if(r)return new a(e);var t=document.createElement(\"a\");return t.href=e,t}(t||\"\"),l=function(){if(!(\"defineProperties\"in Object))return!1;try{var e={};return Object.defineProperties(e,{prop:{get:function(){return!0}}}),e.prop}catch(e){return!1}}()?this:document.createElement(\"a\"),c=new u(i.search?i.search.substring(1):null);function s(){var e=i.href.replace(/#$|\\?$|\\?(?=#)/g,\"\");i.href!==e&&(i.href=e)}function f(){c._setList(i.search?o(i.search.substring(1)):[]),c._update_steps()}return c._url_object=l,Object.defineProperties(l,{href:{get:function(){return i.href},set:function(e){i.href=e,s(),f()},enumerable:!0,configurable:!0},origin:{get:function(){return\"origin\"in i?i.origin:this.protocol+\"//\"+this.host},enumerable:!0,configurable:!0},protocol:{get:function(){return i.protocol},set:function(e){i.protocol=e},enumerable:!0,configurable:!0},username:{get:function(){return i.username},set:function(e){i.username=e},enumerable:!0,configurable:!0},password:{get:function(){return i.password},set:function(e){i.password=e},enumerable:!0,configurable:!0},host:{get:function(){var e={\"http:\":/:80$/,\"https:\":/:443$/,\"ftp:\":/:21$/}[i.protocol];return e?i.host.replace(e,\"\"):i.host},set:function(e){i.host=e},enumerable:!0,configurable:!0},hostname:{get:function(){return i.hostname},set:function(e){i.hostname=e},enumerable:!0,configurable:!0},port:{get:function(){return i.port},set:function(e){i.port=e},enumerable:!0,configurable:!0},pathname:{get:function(){return\"/\"!==i.pathname.charAt(0)?\"/\"+i.pathname:i.pathname},set:function(e){i.pathname=e},enumerable:!0,configurable:!0},search:{get:function(){return i.search},set:function(e){i.search!==e&&(i.search=e,s(),f())},enumerable:!0,configurable:!0},searchParams:{get:function(){return c},enumerable:!0,configurable:!0},hash:{get:function(){return i.hash},set:function(e){i.hash=e,s()},enumerable:!0,configurable:!0},toString:{value:function(){return i.toString()},enumerable:!1,configurable:!0},valueOf:{value:function(){return i.valueOf()},enumerable:!1,configurable:!0}}),l}if(Object.defineProperties(u.prototype,{append:{value:function(e,t){this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},delete:{value:function(e){for(var t=0;t<this._list.length;)this._list[t].name===e?this._list.splice(t,1):++t;this._update_steps()},writable:!0,enumerable:!0,configurable:!0},get:{value:function(e){for(var t=0;t<this._list.length;++t)if(this._list[t].name===e)return this._list[t].value;return null},writable:!0,enumerable:!0,configurable:!0},getAll:{value:function(e){for(var t=[],n=0;n<this._list.length;++n)this._list[n].name===e&&t.push(this._list[n].value);return t},writable:!0,enumerable:!0,configurable:!0},has:{value:function(e){for(var t=0;t<this._list.length;++t)if(this._list[t].name===e)return!0;return!1},writable:!0,enumerable:!0,configurable:!0},set:{value:function(e,t){for(var n=!1,r=0;r<this._list.length;)this._list[r].name===e?n?this._list.splice(r,1):(this._list[r].value=t,n=!0,++r):++r;n||this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},entries:{value:function(){return new l(this._list,\"key+value\")},writable:!0,enumerable:!0,configurable:!0},keys:{value:function(){return new l(this._list,\"key\")},writable:!0,enumerable:!0,configurable:!0},values:{value:function(){return new l(this._list,\"value\")},writable:!0,enumerable:!0,configurable:!0},forEach:{value:function(e){var t=arguments.length>1?arguments[1]:void 0;this._list.forEach(function(n,r){e.call(t,n.value,n.name)})},writable:!0,enumerable:!0,configurable:!0},toString:{value:function(){return i(this._list)},writable:!0,enumerable:!1,configurable:!0}}),\"Symbol\"in e&&\"iterator\"in e.Symbol&&(Object.defineProperty(u.prototype,e.Symbol.iterator,{value:u.prototype.entries,writable:!0,enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,e.Symbol.iterator,{value:function(){return this},writable:!0,enumerable:!0,configurable:!0})),a)for(var s in a)a.hasOwnProperty(s)&&\"function\"==typeof a[s]&&(c[s]=a[s]);e.URL=c,e.URLSearchParams=u}(),function(){if(\"1\"!==new e.URLSearchParams([[\"a\",1]]).get(\"a\")||\"1\"!==new e.URLSearchParams({a:1}).get(\"a\")){var r=e.URLSearchParams;e.URLSearchParams=function(e){if(e&&\"object\"==typeof e&&t(e)){var a=new r;return n(e).forEach(function(e){if(!t(e))throw TypeError();var r=n(e);if(2!==r.length)throw TypeError();a.append(r[0],r[1])}),a}return e&&\"object\"==typeof e?(a=new r,Object.keys(e).forEach(function(t){a.set(t,e[t])}),a):new r(e)}}}()}(self);</script>\n <script>\"use strict\";var get=function(t){return Array.prototype.slice.call(document.querySelectorAll(t))},addFragmentToURLState=function(t){if(!t)return t;var e=new URL(t);if(e&&\"\"!==fragment&&fragment.length<100){var a=window.btoa(JSON.stringify({fragment:\"#\"===fragment[0]?fragment:\"#\".concat(fragment)})),r=e.searchParams.get(\"state\"),n=e.searchParams.get(\"RelayState\");r?e.searchParams.set(\"state\",\"\".concat(r,\".\").concat(a)):n&&e.searchParams.set(\"RelayState\",\"\".concat(n,\".\").concat(a))}return e.toString()},fragment=window.location.hash||\"\",article=document.querySelector(\"#data\"),dset=article.dataset,autoRedirectToIdentity=\"true\"===dset.autoRedirectToIdentity,autoRedirectURL=addFragmentToURLState(dset.autoRedirectUrl),message=dset.message;autoRedirectURL&&autoRedirectToIdentity&&(message||(window.location=autoRedirectURL));</script>\n </head>\n\n <body>\n <div class=\"base_AccessLogo\">\n <svg width=\"165\" height=\"50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" src=\"../images/access_logo_light.svg\"><path d=\"M21.292 15.556h-7.816C17.168 6.435 26.111 0 36.556 0c13.747 0 24.89 11.143 24.89 24.89 0 13.746-11.143 24.89-24.89 24.89-10.445 0-19.388-6.436-23.08-15.557h7.816c3.145 5.132 8.805 8.556 15.265 8.556 9.88 0 17.889-8.009 17.889-17.89C54.446 15.01 46.436 7 36.556 7c-6.46 0-12.12 3.424-15.264 8.556zm-11.958 14l-3.112-3.11H45.89c1.386 0 2.08 1.674 1.1 2.655l-6.222 6.222-2.2-2.2 3.567-3.567H9.334zM32.346 16.66l2.2-2.2 6.222 6.223c.98.98.286 2.655-1.1 2.655H3.11L0 20.226h35.913l-3.567-3.567zM84.109 15.383c1.699 0 2.411-.97 2.578-2.123h2.063c-.243 2.214-1.654 3.943-4.702 3.943-2.851 0-4.884-2.078-4.884-5.309 0-3.185 2.063-5.293 4.884-5.293 3.003 0 4.474 1.698 4.702 3.959h-2.063c-.182-1.153-.925-2.14-2.593-2.14-1.593 0-2.821 1.335-2.806 3.49 0 2.183 1.213 3.473 2.82 3.473zm5.612 1.729V6.343h2.078v10.769H89.72zm6.917-7.507c2.305 0 3.822 1.531 3.822 3.76 0 2.23-1.517 3.823-3.822 3.823-2.276 0-3.808-1.517-3.808-3.746 0-2.245 1.532-3.837 3.808-3.837zm0 1.713c-1.032 0-1.715.834-1.715 2.093 0 1.23.683 2.063 1.715 2.063 1.061 0 1.713-.834 1.713-2.063 0-1.26-.652-2.093-1.713-2.093zm9.494-1.638h2.078v7.432h-2.002l-.061-1.092c-.425.698-1.153 1.168-2.184 1.168-1.699 0-2.563-1.198-2.563-2.73V9.68h2.092v4.292c0 .865.441 1.41 1.275 1.41.773 0 1.365-.621 1.365-1.546V9.68zm8.631-3.337h2.077v10.769h-2.017l-.046-1.077c-.439.668-1.197 1.153-2.305 1.153-1.881 0-3.246-1.365-3.246-3.7 0-2.276 1.29-3.883 3.353-3.883 1.092 0 1.774.439 2.184 1.09V6.344zm-1.775 9.1c1.152 0 1.775-.97 1.775-1.804v-.47c0-.895-.653-1.82-1.76-1.82-.986 0-1.668.818-1.668 2.078 0 1.228.652 2.017 1.653 2.017zm5.824-6.37c0-1.714 1.213-2.927 3.124-2.927.413.003.825.05 1.229.137l-.076 1.743c-.182-.075-.516-.136-.834-.136-.925 0-1.365.5-1.365 1.259v.531h2.154v1.653h-2.155v5.779h-2.076v-5.78h-1.063V9.68h1.062v-.607zm5.369-2.73h2.078v10.769h-2.078V6.343zm6.553 3.262c2.229 0 3.352 1.197 3.352 3.108v4.399h-1.926l-.046-1.016c-.288.47-.986 1.092-2.427 1.092-1.608 0-2.472-.804-2.472-2.048 0-1.804 1.851-2.336 3.867-2.336h.987v-.257c0-.835-.471-1.365-1.396-1.365-.788 0-1.304.379-1.38 1.03h-1.881c.137-1.652 1.426-2.608 3.321-2.608h.001zm-.41 6.081c1.092 0 1.745-.683 1.745-1.274v-.47h-1.078c-1.152 0-1.759.303-1.759.97 0 .47.364.774 1.092.774zm9.055-6.082c.167 0 .379.015.47.061l-.015 2.033c-.121-.046-.228-.077-.515-.077-.941 0-1.699.591-1.821 1.654v3.837h-2.078V9.68h2.002l.046 1.213c.349-.758.94-1.29 1.911-1.29zm7.887 3.853v.394h-5.232c.151 1.137.819 1.714 1.789 1.714 1.002 0 1.366-.516 1.487-.91h1.926c-.243 1.289-1.274 2.532-3.519 2.532-2.26 0-3.685-1.562-3.685-3.776 0-2.245 1.562-3.807 3.715-3.807 2.261 0 3.519 1.578 3.519 3.853zm-3.503-2.305c-.835 0-1.501.47-1.699 1.5h3.261c-.136-1.06-.713-1.5-1.562-1.5zM91.91 42l-1.41-4.287h-7.972L81.118 42h-3.972l7.05-19.742h4.634L95.88 42h-3.97zm-8.318-7.424h5.842l-2.906-8.806-2.936 8.806zm19.189 7.569c-4.232 0-6.936-2.964-6.936-7.166 0-4.26 2.907-7.223 6.992-7.223 4.203 0 6.217 2.532 6.563 5.669h-3.799c-.23-1.353-1.007-2.417-2.648-2.417-1.841 0-3.136 1.38-3.136 3.97 0 2.533 1.236 3.915 3.108 3.915 1.726 0 2.446-1.036 2.675-2.36h3.8c-.374 3.08-2.418 5.612-6.619 5.612zm14.496 0c-4.23 0-6.935-2.964-6.935-7.166 0-4.26 2.906-7.223 6.994-7.223 4.201 0 6.216 2.532 6.561 5.669h-3.799c-.231-1.353-1.007-2.417-2.648-2.417-1.841 0-3.136 1.38-3.136 3.97 0 2.533 1.237 3.915 3.107 3.915 1.727 0 2.446-1.036 2.677-2.36h3.799c-.375 3.08-2.417 5.612-6.619 5.612h-.001zm21.289-7.08v.748h-9.928c.288 2.159 1.554 3.252 3.396 3.252 1.899 0 2.59-.978 2.82-1.726h3.656c-.462 2.446-2.418 4.806-6.678 4.806-4.288 0-6.992-2.964-6.992-7.166 0-4.26 2.963-7.223 7.05-7.223 4.288 0 6.676 2.992 6.676 7.31zm-6.647-4.374c-1.583 0-2.849.892-3.224 2.849h6.188c-.259-2.014-1.353-2.85-2.964-2.85zm19.85 7.31c.029 2.619-2.36 4.144-6.13 4.144-3.971 0-5.986-1.612-6.015-4.547l3.367.029c.087 1.15.864 1.784 2.59 1.784 1.67 0 2.389-.49 2.36-1.295 0-2.648-8.029-.49-8.029-6.188 0-2.59 2.302-4.172 6.015-4.172 3.597 0 5.612 1.669 5.64 4.46h-3.424c-.087-1.151-.864-1.727-2.245-1.727-1.496 0-2.158.518-2.158 1.324 0 2.59 8.029.317 8.029 6.188zm13.23 0c.03 2.619-2.359 4.144-6.129 4.144-3.971 0-5.986-1.612-6.015-4.547l3.367.029c.086 1.15.864 1.784 2.591 1.784 1.669 0 2.387-.49 2.359-1.295 0-2.648-8.029-.49-8.029-6.188 0-2.59 2.302-4.172 6.015-4.172 3.597 0 5.612 1.669 5.641 4.46h-3.425c-.086-1.151-.863-1.727-2.245-1.727-1.496 0-2.158.518-2.158 1.324 0 2.59 8.029.317 8.029 6.188h-.001z\" fill=\"#fff\"/></svg>\n </div>\n <div class=\"Content\">\n\n <div class=\"AuthBox\">\n <div class=\"AuthBox-body\">\n <a class=\"OrgAvatarLink\" href=''>\n <div class=\"OrgAvatarLink-logo\">\n <img height=50 src=\"https://s.cystack.net/resource/cystack/CyStack-Black.svg\" style=\"display:none;\" onload=\"this.style.display=''\"></img>\n </div>\n <div class=\"OrgAvatarLink-title\">\n CyStack\n </div>\n </a>\n <div class=\"AuthBox-App\">\n <div class=\"App-name\">\n CyStack Blog\n </div>\n\n </div>\n <div class=\"AuthBox-Normal\">\n <div class=\"AuthBox-text\">\n Sign in with:\n </div>\n <div class=\"AuthServiceLogin\">\n <div class=\"AuthServiceLogin-row AuthServiceLogin-row-is-only\">\n <a class=\" Button Button-is-block Button-is-auth js-idp\" data-idp=\"Google\" title=\"Google ・ CyStack\"\n href=\"https://accounts.google.com/o/oauth2/auth?client_id=306229843697-8ot9f4phmrpr35gahbe3cvf5agj6nhs6.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fcystack.cloudflareaccess.com%2Fcdn-cgi%2Faccess%2Fcallback&response_type=code&state=16f56a1fefbca4d1b82e50fe476c61521b4ddbdb8e716437e8492fa72fdd0df7.JTdCJTIyaWF0JTIyJTNBMTc2MDU0NjA1NyUyQyUyMmF1dGhEb21haW4lMjIlM0ElMjJjeXN0YWNrLmNsb3VkZmxhcmVhY2Nlc3MuY29tJTIyJTJDJTIyaG9zdG5hbWUlMjIlM0ElMjJibG9nLmN5c3RhY2sub3JnJTIyJTJDJTIycmVkaXJlY3RVUkwlMjIlM0ElMjIlMkZ3cC1qc29uJTJGcmFua21hdGglMkZ2MSUyRmdldEhlYWQlM0Z1cmwlM0RodHRwcyUzQSUyNTJGJTI1MkZibG9nLmN5c3RhY2sub3JnJTI1MkZibG9nJTI1MkYyMDE5JTI1MkYxMiUyNTJGMTglMjUyRnZ3cy0yMDE5LWJhby1tYXQtdHJvbmcta3ktbmd1eWVuLWRpY2gtdnUtZGFtLW1heSUyNTJGJTIyJTJDJTIyYXVkJTIyJTNBJTIyZDA4Y2MzMTJkMzU4MDI2OGRmM2FjYTI0Y2I0ZjRiNzQ2YWE1NThlZDBhMzg0Y2I0ZDczZGQ3NjhlYjAyMDFmNyUyMiUyQyUyMmlzU2FtZVNpdGVOb25lQ29tcGF0aWJsZSUyMiUzQXRydWUlMkMlMjJpc0lEUFRlc3QlMjIlM0FmYWxzZSUyQyUyMmlzUmVmcmVzaCUyMiUzQWZhbHNlJTJDJTIybm9uY2UlMjIlM0ElMjJuM0tpQzN4dGNSUWtNcmZBZSUyMiUyQyUyMmlkcElkJTIyJTNBJTIyODkzNTUzZjYtMjA1Yy00Y2NjLTljMWUtYzMwOTQ4ZTdmODVjJTIyJTJDJTIyc2VydmljZV90b2tlbl9zdGF0dXMlMjIlM0FmYWxzZSUyQyUyMmF1dGhfc3RhdHVzJTIyJTNBJTIyTk9ORSUyMiUyQyUyMmlzX3dhcnAlMjIlM0FmYWxzZSUyQyUyMmlzX2dhdGV3YXklMjIlM0FmYWxzZSUyQyUyMm10bHNfYXV0aCUyMiUzQSU3QiUyMmNlcnRfaXNzdWVyX2RuJTIyJTNBJTIyJTIyJTJDJTIyY2VydF9zZXJpYWwlMjIlM0ElMjIlMjIlMkMlMjJjZXJ0X2lzc3Vlcl9za2klMjIlM0ElMjIlMjIlMkMlMjJjZXJ0X3ByZXNlbnRlZCUyMiUzQWZhbHNlJTJDJTIyY29tbW9uX25hbWUlMjIlM0ElMjIlMjIlMkMlMjJhdXRoX3N0YXR1cyUyMiUzQSUyMk5PTkUlMjIlN0QlMkMlMjJhcHBTZXNzaW9uSGFzaCUyMiUzQSUyMjNhZDg1NDQzMTMwOTM5NzM4NmNhYzQyNDExNTIxYWFiZTdlMzdkMzNjNzkwZGQxMWU4ZTdmNDI4ZWFlYWM1ZWUlMjIlN0Q%253D&scope=email+profile+openid\" accesskey=\"1\" id=\"idp1\">\n <div class=\"Button-auth-service-icon\"><svg viewBox=\"0 0 256 262\"><path d=\"M13.925 71.947C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602C35.393 231.798 79.49 261.1 130.55 261.1c35.248 0 64.839-11.605 86.453-31.622 24.659-22.774 38.875-56.282 38.875-96.027 0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82 10.59-31.477 39.891-54.251 74.414-54.251 24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947z\"></path></svg></div>\n <div class=\"AuthBoxRow--name\">Google ・ CyStack</div>\n </a>\n </div>\n </div>\n <div class=\"AuthBox-RequestCode AuthBox-RequestCode__idpsExist\">\n <div class=\"AuthBox-text\">Get a login code emailed to you</div>\n <form class=\"AuthFormLogin\" action='https://cystack.cloudflareaccess.com/cdn-cgi/access/verify-code/blog.cystack.org?kid=d08cc312d3580268df3aca24cb4f4b746aa558ed0a384cb4d73dd768eb0201f7&meta=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjEzMmY3YmMzNWZjMzI0ZTAzNWY2Y2E3Mjk2N2QzZDkzOTZhMzUzOWEwZGNmYzNhYTRlY2VjMDc5ZDgyNDI0NzUifQ.eyJ0eXBlIjoibWV0YSIsImF1ZCI6ImQwOGNjMzEyZDM1ODAyNjhkZjNhY2EyNGNiNGY0Yjc0NmFhNTU4ZWQwYTM4NGNiNGQ3M2RkNzY4ZWIwMjAxZjciLCJob3N0bmFtZSI6ImJsb2cuY3lzdGFjay5vcmciLCJyZWRpcmVjdF91cmwiOiIvd3AtanNvbi9yYW5rbWF0aC92MS9nZXRIZWFkP3VybD1odHRwczolMkYlMkZibG9nLmN5c3RhY2sub3JnJTJGYmxvZyUyRjIwMTklMkYxMiUyRjE4JTJGdndzLTIwMTktYmFvLW1hdC10cm9uZy1reS1uZ3V5ZW4tZGljaC12dS1kYW0tbWF5JTJGIiwic2VydmljZV90b2tlbl9zdGF0dXMiOmZhbHNlLCJpc193YXJwIjpmYWxzZSwiaXNfZ2F0ZXdheSI6ZmFsc2UsImV4cCI6MTc2MDU0NjM1NSwibmJmIjoxNzYwNTQ2MDU1LCJpYXQiOjE3NjA1NDYwNTUsImF1dGhfc3RhdHVzIjoiTk9ORSIsIm10bHNfYXV0aCI6eyJjZXJ0X2lzc3Vlcl9kbiI6IiIsImNlcnRfc2VyaWFsIjoiIiwiY2VydF9pc3N1ZXJfc2tpIjoiIiwiY2VydF9wcmVzZW50ZWQiOmZhbHNlLCJjb21tb25fbmFtZSI6IiIsImF1dGhfc3RhdHVzIjoiTk9ORSJ9LCJyZWFsX2NvdW50cnkiOiJTRyIsImFwcF9zZXNzaW9uX2hhc2giOiIzYWQ4NTQ0MzEzMDkzOTczODZjYWM0MjQxMTUyMWFhYmU3ZTM3ZDMzYzc5MGRkMTFlOGU3ZjQyOGVhZWFjNWVlIn0.H0NXiyVWWl6M6N67VOWspvI4xs9RLQxPRHQIy6JiuW2nAB-Es1vW61bjErAFTusmH5l_VK0aMI7H5FlEq8zETX9v3zj8zPBxfabxg02eU-3Vxd1Qxn28gFqvCXfX9bkp3JM6pX4LJT0Aw-qZTKm9KvohPt-MRuyooyMo2DxiuJHA3raOF5r07R2rfN-qCtk0hKkhRhnkGeOxdeQMS0-8gNsHkQ527JW6Oh4AssUSexqiToFIa52_WOmQkDBK27CycNOsCk8mC0m21ybx2Dw615gYDru_P8Z5i3qgQg1fGcGyXQMBcFCmDFeCfUkUoHImuPKbtpMphEHDi7gMXWx2Lg&redirect_url=%2Fwp-json%2Frankmath%2Fv1%2FgetHead%3Furl%3Dhttps%3A%252F%252Fblog.cystack.org%252Fblog%252F2019%252F12%252F18%252Fvws-2019-bao-mat-trong-ky-nguyen-dich-vu-dam-may%252F' method=\"post\" id=\"totp-form\">\n <div class=\"AuthFormLogin-row\">\n <label>Email</label>\n <input class=\"StandardInput StandardInput-is-block EmailInput\" type=\"email\" required\n placeholder=\"example@email.com\" spellcheck=\"false\" autocomplete=\"off\" autocapitalize=\"none\"\n autofocus name=\"email\">\n <input hidden type=\"text\" name=\"client_id\" value=''>\n <input hidden type=\"text\" name=\"connector_id\" value=''>\n <input hidden type=\"text\" name=\"connector_type\" value=''>\n <input hidden type=\"text\" name=\"redirect_url\" value=''>\n </div>\n <div class=\"AuthFormLogin-row\">\n <button type=\"submit\" form=\"totp-form\" class=\"Button Button-is-block Button-is-juicy Button-uses-org-theme-accent-color\">\n Send me a code\n </button>\n </div>\n </form>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n <div class=\"base_TeamsLogo\">\n <svg width=\"275\" height=\"32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" src=\"../images/zt_logo_white.svg\"><g clip-path=\"url(#clip0_51_956)\" fill=\"#fff\"><path d=\"M45.4 13.343c-.382-2.173-2.103-3.416-4.318-3.416-2.97 0-5.061 2.279-5.061 6.375 0 4.168 2.102 6.375 5.053 6.375 2.17 0 3.907-1.198 4.325-3.324l3.316.016c-.507 3.466-3.368 6.259-7.686 6.259-4.787 0-8.316-3.466-8.316-9.326s3.573-9.325 8.316-9.325c4.026 0 7.127 2.338 7.686 6.374l-3.316-.008zM54.43 25.373h-3.21V7.216h3.21v18.157zM56.767 18.617c0-4.22 2.535-7.04 6.527-7.04 3.991 0 6.524 2.82 6.524 7.04 0 4.22-2.535 7.021-6.524 7.021s-6.527-2.811-6.527-7.02zm9.796 0c0-2.494-1.08-4.488-3.253-4.488-2.174 0-3.288 1.995-3.288 4.488 0 2.494 1.08 4.467 3.288 4.467 2.207 0 3.253-1.986 3.253-4.475v.008zM80.834 11.756h3.208v13.617h-3.111v-2.42h-.142c-.62 1.524-2.055 2.596-4.094 2.596-2.678 0-4.54-1.84-4.54-5.124v-8.671h3.208v8.172c0 1.729 1.03 2.82 2.572 2.82 1.42 0 2.89-1.028 2.89-3.104l.009-7.886zM86.407 18.58c0-4.538 2.473-7.002 5.62-7.002 2.402 0 3.403 1.445 3.892 2.43h.134V7.216h3.216v18.157h-3.153v-2.147h-.194c-.505.993-1.561 2.386-3.9 2.386-3.213 0-5.615-2.543-5.615-7.032zm9.707-.015c0-2.644-1.136-4.354-3.2-4.354-2.137 0-3.236 1.818-3.236 4.354 0 2.535 1.117 4.414 3.235 4.414 2.05 0 3.2-1.773 3.2-4.414zM109.223 14.237h-2.827v11.136h-3.211V14.237h-2.01v-2.48h2.01v-1.288c0-2.746 1.889-4.105 4.257-4.105a8 8 0 0 1 2.438.373l-.649 2.484a4.062 4.062 0 0 0-1.196-.195c-1.198 0-1.639.594-1.639 1.656v1.074h2.827v2.48zM114.576 25.373h-3.211V7.216h3.211v18.157zM116.859 21.552c0-3.069 2.528-3.857 5.169-4.14 2.402-.264 3.369-.303 3.369-1.225v-.053c0-1.337-.815-2.102-2.305-2.102-1.576 0-2.473.788-2.793 1.729l-2.996-.426c.71-2.483 2.907-3.76 5.781-3.76 2.599 0 5.531 1.083 5.531 4.68v9.115h-3.084V23.5h-.105c-.586 1.142-1.864 2.144-4 2.144-2.607.002-4.567-1.417-4.567-4.092zm8.545-1.05v-1.606c-.415.336-2.102.549-2.943.665-1.434.204-2.506.717-2.506 1.95 0 1.18.956 1.791 2.294 1.791 1.934-.013 3.155-1.298 3.155-2.814v.013zM131.467 11.756h3.111v2.268h.142a3.412 3.412 0 0 1 3.36-2.465c.386.001.771.031 1.151.09v2.953a6.074 6.074 0 0 0-1.487-.186c-1.766 0-3.069 1.221-3.069 2.95v8.007h-3.208V11.756zM139.841 18.643c0-4.204 2.544-7.065 6.446-7.065 3.35 0 6.222 2.102 6.222 6.879v.985h-9.486c.026 2.331 1.401 3.695 3.477 3.695 1.382 0 2.446-.602 2.89-1.755l2.998.338c-.567 2.366-2.748 3.918-5.923 3.918-4.115 0-6.624-2.722-6.624-6.995zm9.594-1.366c-.019-1.84-1.262-3.198-3.104-3.198-1.915 0-3.2 1.461-3.297 3.198h6.401zM161.474 23.323l9.31-13.348h-9.362v-2.76h13.438v2.05l-9.3 13.357h9.355v2.759h-13.441v-2.058zM176.628 18.643c0-4.204 2.546-7.065 6.446-7.065 3.35 0 6.222 2.102 6.222 6.879v.985h-9.494c.029 2.331 1.403 3.695 3.477 3.695 1.382 0 2.446-.602 2.89-1.755l2.998.338c-.567 2.366-2.748 3.918-5.922 3.918-4.108 0-6.617-2.722-6.617-6.995zm9.594-1.366c-.019-1.84-1.259-3.198-3.104-3.198-1.915 0-3.2 1.461-3.297 3.198h6.401zM191.259 11.756h3.114v2.268h.142a3.398 3.398 0 0 1 3.358-2.465c.386.002.772.031 1.154.09v2.953a6.115 6.115 0 0 0-1.49-.187c-1.764 0-3.067 1.222-3.067 2.951v8.007h-3.211V11.756zM199.26 18.617c0-4.22 2.536-7.04 6.525-7.04 3.989 0 6.524 2.82 6.524 7.04 0 4.22-2.535 7.021-6.524 7.021s-6.525-2.811-6.525-7.02zm9.796 0c0-2.494-1.082-4.488-3.253-4.488-2.17 0-3.29 1.995-3.29 4.488 0 2.494 1.083 4.467 3.29 4.467 2.208 0 3.253-1.986 3.253-4.475v.008zM217.064 7.216h14.484v2.759h-5.61v15.398h-3.264V9.975h-5.61v-2.76zM232.024 11.756h3.111v2.268h.142a3.412 3.412 0 0 1 3.361-2.465c.385.001.77.031 1.15.09v2.953a6.081 6.081 0 0 0-1.489-.186c-1.764 0-3.067 1.221-3.067 2.95v8.007h-3.208V11.756zM249.855 11.756h3.209v13.617h-3.112v-2.42h-.152c-.62 1.524-2.057 2.596-4.097 2.596-2.675 0-4.538-1.84-4.538-5.124v-8.671h3.209v8.172c0 1.729 1.03 2.82 2.572 2.82 1.419 0 2.891-1.028 2.891-3.104l.018-7.886zM263.448 15.674c-.247-.896-1.027-1.702-2.507-1.702-1.34 0-2.365.638-2.349 1.56 0 .789.539 1.267 1.924 1.577l2.323.496c2.569.56 3.82 1.748 3.828 3.68 0 2.58-2.412 4.343-5.815 4.343-3.342 0-5.445-1.482-5.841-3.981l3.127-.302c.276 1.224 1.232 1.863 2.704 1.863 1.526 0 2.535-.702 2.535-1.632 0-.77-.583-1.277-1.839-1.55l-2.323-.49c-2.628-.54-3.839-1.852-3.829-3.838 0-2.518 2.223-4.13 5.505-4.13 3.19 0 5.035 1.47 5.479 3.775l-2.922.331zM275.367 14.237h-2.685v7.04c0 1.295.646 1.576 1.453 1.576.317-.004.633-.047.941-.126l.541 2.51a6.44 6.44 0 0 1-1.889.317c-2.41.074-4.273-1.187-4.254-3.75v-7.57h-1.935v-2.48h1.935V8.49h3.208v3.264h2.685v2.483zM5.255 15.742c1.9-.107 2.665-.935 2.665-3.116V3.992a13.401 13.401 0 0 1-5.292 1.962L0 6.322v9.42h5.255zM7.92 20.446c0-2.286-.846-3.085-2.956-3.127H.113c.754 6.075 4.911 10.122 7.807 12.248v-9.12zM21.644 5.954a13.367 13.367 0 0 1-7.22-3.458L12.128 0 9.86 2.483c-.026.026-.15.153-.363.34v9.882c.019 2.12.789 2.93 2.66 3.037h6.43l-2.589-2.585 1.117-1.114 4.488 4.488-4.488 4.49-1.117-1.114 2.589-2.588H12.45c-2.086.042-2.935.823-2.954 3.048v10.248c.705.434 1.18.673 1.267.715l1.374.67 1.372-.67c.439-.215 10.773-5.381 10.773-15.974V6.33l-2.638-.376z\"/></g><defs><clipPath id=\"clip0_51_956\"><path fill=\"#fff\" d=\"M0 0h275v32H0z\"/></clipPath></defs></svg>\n </div>\n\n <script>\"use strict\";if(document.addEventListener(\"keyup\",function(e){if(\"BODY\"===e.target.nodeName&&e.key>=1&&e.key<=10){var t=document.getElementById(\"idp\"+e.key);window.location=t.getAttribute(\"href\")}},!1),\"\"!==fragment&&fragment.length<100){var services=get(\".js-idp\")||[];services.map(function(e){return e.href=addFragmentToURLState(e.href),e})}</script>\n </body>\n\n</html>"