{"version":3,"file":"/js/front.js","mappings":"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IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IAId,IAEAk3B,EAAGl3B,OAAO,oBAAoB,CAC5B,aACC,SAAU+5B,GACX,SAASgK,EAAarhH,EAAUv5B,GAC9B46I,EAAYtJ,UAAU3nI,YAAY9I,KAAK3D,KACzC,CAiCA,OA/BA0zI,EAAMK,OAAO2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","sources":["webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./resources/assets/js/common.js","webpack:///./resources/assets/js/common/countdown.js","webpack:///./resources/assets/js/common/password-strength.js","webpack:///./resources/assets/js/front/base.js","webpack:///./resources/assets/js/front/cookie-banner.js","webpack:///./node_modules/tslib/tslib.es6.mjs","webpack:///./node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","webpack:///./resources/assets/js/front/custom.js","webpack:///./resources/assets/js/front/index.js","webpack:///./resources/assets/js/front/radio.js","webpack:///./resources/assets/js/front/swiper-setup.js","webpack:///./resources/assets/js/front/taketime.js","webpack:///./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack:///./node_modules/bootstrap-sass/assets/javascripts/bootstrap.js","webpack:///./node_modules/codemirror-spell-checker/src/js/spell-checker.js","webpack:///./node_modules/codemirror/addon/display/fullscreen.js","webpack:///./node_modules/codemirror/addon/display/placeholder.js","webpack:///./node_modules/codemirror/addon/edit/continuelist.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/codemirror/mode/gfm/gfm.js","webpack:///./node_modules/codemirror/mode/markdown/markdown.js","webpack:///./node_modules/codemirror/mode/meta.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/inputmask/dist/inputmask.js","webpack:///./node_modules/jquery-countdown/dist/jquery.countdown.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/js.cookie/dst/Cookie.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/select2/dist/js/select2.js","webpack:///./node_modules/simplemde/src/js/codemirror/tablist.js","webpack:///./node_modules/simplemde/src/js/simplemde.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/swiper/esm/utils/get-support.js","webpack:///./node_modules/swiper/esm/utils/get-device.js","webpack:///./node_modules/swiper/esm/utils/get-browser.js","webpack:///./node_modules/swiper/esm/modules/resize/resize.js","webpack:///./node_modules/swiper/esm/modules/observer/observer.js","webpack:///./node_modules/swiper/esm/components/core/events-emitter.js","webpack:///./node_modules/swiper/esm/components/core/update/index.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSize.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack:///./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/translate/index.js","webpack:///./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/index.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack:///./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/loop/index.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/esm/components/core/events/onResize.js","webpack:///./node_modules/swiper/esm/components/core/events/onClick.js","webpack:///./node_modules/swiper/esm/components/core/events/onScroll.js","webpack:///./node_modules/swiper/esm/components/core/events/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack:///./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack:///./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack:///./node_modules/swiper/esm/components/core/defaults.js","webpack:///./node_modules/swiper/esm/components/core/core-class.js","webpack:///./node_modules/swiper/esm/components/core/modular.js","webpack:///./node_modules/swiper/esm/components/core/transition/index.js","webpack:///./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/index.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/images/index.js","webpack:///./node_modules/swiper/esm/components/core/images/loadImage.js","webpack:///./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/esm/utils/dom.js","webpack:///./node_modules/swiper/esm/utils/utils.js","webpack:///./node_modules/swiper/esm/components/virtual/virtual.js","webpack:///./node_modules/swiper/esm/components/keyboard/keyboard.js","webpack:///./node_modules/swiper/esm/components/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/esm/components/navigation/navigation.js","webpack:///./node_modules/swiper/esm/components/pagination/pagination.js","webpack:///./node_modules/swiper/esm/components/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/esm/components/parallax/parallax.js","webpack:///./node_modules/swiper/esm/components/zoom/zoom.js","webpack:///./node_modules/swiper/esm/components/lazy/lazy.js","webpack:///./node_modules/swiper/esm/components/controller/controller.js","webpack:///./node_modules/swiper/esm/components/a11y/a11y.js","webpack:///./node_modules/swiper/esm/components/history/history.js","webpack:///./node_modules/swiper/esm/components/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack:///./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/esm/components/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/esm/components/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/esm/components/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack:///./node_modules/typo-js/typo.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/array-slice-simple.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/array-sort.js","webpack:///./node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/create-iter-result-object.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/core-js/internals/define-built-ins.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/document-all.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///./node_modules/core-js/internals/engine-is-bun.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-accessor.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/core-js/internals/is-constructor.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/iterator-create-constructor.js","webpack:///./node_modules/core-js/internals/iterator-define.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/regexp-get-flags.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/internals/schedulers-fix.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/to-string.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/url-constructor-detection.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/web.set-interval.js","webpack:///./node_modules/core-js/modules/web.set-timeout.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/marked/lib/marked.cjs","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./resources/assets/js/front.js"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","try {\n window.$ = window.jQuery = require('jquery');\n window.SimpleMDE = require('simplemde')\n\n require('bootstrap-sass');\n\n window.axios = require('axios');\n axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\n axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content');\n\n} catch (e) {\n}\n","require('jquery-countdown');\n\nlet $clock = $('.js-countdown');\n$(document).ready(function () {\n if ($clock.length > 0) {\n let countdown = $clock.data('expire');\n\n $clock.countdown(countdown).on('update.countdown', function (event) {\n let weeks = parseInt(event.strftime('%-w'), 10);\n if (weeks > 0) {\n $clock.find('div[data-type=\"weeks\"] .__digit').html(weeks < 10 ? ((weeks === 0 ? '' : '0') + weeks) : weeks);\n $clock.find('div[data-type=\"weeks\"] .__label').html(event.strftime('Week%!w'));\n } else {\n $clock.find('div[data-type=\"weeks\"]').remove();\n }\n\n let days = parseInt(event.strftime('%-d'), 10);\n $clock.find('div[data-type=\"days\"] .__digit').html(days < 10 ? (days === 0 ? '00' : '0' + days) : days);\n $clock.find('div[data-type=\"days\"] .__label').html(event.strftime('Day%!d'));\n\n $clock.find('div[data-type=\"hours\"] .__digit').html(event.strftime('%H'));\n $clock.find('div[data-type=\"hours\"] .__label').html(event.strftime('Hour%!H'));\n\n $clock.find('div[data-type=\"minutes\"] .__digit').html(event.strftime('%M'));\n $clock.find('div[data-type=\"minutes\"] .__label').html(event.strftime('Minute%!M'));\n\n $clock.find('div[data-type=\"seconds\"] .__digit').html(event.strftime('%S'));\n $clock.find('div[data-type=\"seconds\"] .__label').html(event.strftime('Second%!S'));\n\n $clock.removeClass('hide');\n });\n }\n});\n","let $strengthIndicator = $('.js-strength-indicator');\nif ($strengthIndicator.length > 0) {\n $(document).on('keyup', 'input[name=\"password\"]', function () {\n let value = $(this).val(),\n total = 0;\n\n $strengthIndicator.removeClass(function (index, css) {\n return (css.match(/(^|\\s)__\\S+/g) || []).join(' ');\n });\n\n if (value.length >= 6) {\n total++;\n }\n\n if (/[A-Z]/.test(value)) {\n total++;\n }\n\n if (/[0-9]/.test(value)) {\n total++;\n }\n\n if (/^[a-zA-Z0-9- ]*$/.test(value) === false) {\n total++;\n }\n\n if (value.length < 6) {\n total = 0;\n $strengthIndicator.addClass('_short');\n } else {\n $strengthIndicator.removeClass('_short');\n }\n\n switch (total) {\n case 1:\n $strengthIndicator.addClass('__weak');\n break;\n case 2:\n $strengthIndicator.addClass('__bad');\n break;\n case 3:\n $strengthIndicator.addClass('__good');\n break;\n case 4:\n $strengthIndicator.addClass('__strong');\n break;\n }\n });\n}\n","import Inputmask from 'inputmask';\n\nwindow.mobileCheck = function () {\n let check = false;\n (function (a) {\n // noinspection RegExpSingleCharAlternation,RegExpRedundantEscape\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n};\n\n// region Radio and Checkbox Fix\n$('.radio-label').keypress(function (e) {\n if (e.keyCode === 0 || e.keyCode === 32) {\n $(this).find('input').prop('checked', true);\n }\n});\n$(document).on('click', '.radio-wrapper', function (e) {\n let name = $(this).find('input').attr('name')\n\n $('input[name=\"' + name + '\"]').each(function () {\n $(this).removeAttr('checked');\n });\n\n $(this).find('input').prop('checked', true);\n});\n\n$('.checkbox-label').keypress(function (e) {\n if (e.keyCode === 0 || e.keyCode === 32) {\n let $ele = $(this).find('input');\n $ele.prop('checked', !$ele.is(':checked'));\n }\n});\n// endregion\n\n// region Modal trap keyboard focus function\nfunction trapKeyboardFocus(selector_id) {\n const modal = document.querySelector(selector_id); // select the modal by it's id\n if (!modal) {\n console.error('Modal does not exist: ' + selector_id);\n return;\n }\n\n // add all the elements inside modal which you want to make focusable\n const focusableElements =\n '[href], button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n const firstFocusableElement = modal.querySelectorAll(focusableElements)[0]; // get first element to be focused inside modal\n const focusableContent = modal.querySelectorAll(focusableElements);\n const lastFocusableElement = focusableContent[focusableContent.length - 1]; // get last element to be focused inside modal\n\n document.addEventListener('keydown', function (e) {\n let isTabPressed = e.key === 'Tab';\n\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) { // if shift key pressed for shift + tab combination\n if (document.activeElement === firstFocusableElement) {\n console.log('shift');\n lastFocusableElement.focus(); // add focus for the last focusable element\n e.preventDefault();\n }\n } else { // if tab key is pressed\n if (document.activeElement === lastFocusableElement) { // if focused has reached to last focusable element then focus first focusable element after pressing tab\n console.log('tab');\n firstFocusableElement.focus(); // add focus for the first focusable element\n e.preventDefault();\n }\n }\n });\n firstFocusableElement.focus();\n}\n\n// endregion\n\n//region Side Menu Toggle (hamburger on mobile)\n$(document).on('click', '.js-toggle-side-menu', function (event) {\n event.preventDefault();\n let $sideMenu = $('.js-side-menu');\n $sideMenu.toggleClass('open');\n\n if ($sideMenu.hasClass('open')) {\n $('#js-scrolled-focus-mobile').attr('aria-expanded', 'true');\n\n $sideMenu.attr('aria-hidden', 'false');\n $sideMenu.find('.side-menu-header').attr('aria-hidden', 'false');\n $sideMenu.find('a').attr('tabindex', '0').attr('aria-hidden', 'false');\n // set modal content exposed to accessibility tree\n $('.js-close-menu').attr('tabindex', '0');\n $('.js-menu-item').attr('tabindex', '0');\n trapKeyboardFocus('#js-side-modal');\n\n } else {\n $('#js-scrolled-focus-mobile').attr('aria-expanded', 'false');\n\n $sideMenu.attr('aria-hidden', 'true');\n $sideMenu.find('.side-menu-header').attr('aria-hidden', 'true');\n $sideMenu.find('a').attr('tabindex', '-1').attr('aria-hidden', 'true');\n $('.js-close-menu').attr('tabindex', '-1');\n $('.js-menu-item').attr('tabindex', '-1');\n $('.js-accessible-logo').find('a').focus();\n }\n});\n// endregion\n\n// region Modal Window Panel Collapse\n$(document).on('hide.bs.collapse', '.collapse', function () {\n $('.accordion-button-icon').removeClass('minus').addClass('plus');\n}).on('show.bs.collapse', function () {\n $('.accordion-button-icon').removeClass('plus').addClass('minus');\n});\n\n$(document).on('show.bs.modal', '.modal', function () {\n $('.modal .modal-body').css({'overflow-y': 'auto', 'max-height': $(window).height() * 0.7});\n});\n// endregion\n\n// region Range Slider\nif ($('.js-input-slider').length > 0) {\n $(document).on('input', '.js-input-slider', function () {\n let self = $(this);\n let max = parseInt(self.attr('max'), 10);\n let totalValue = 0;\n let othersValue = 0;\n\n $('.js-input-slider').each(function () {\n totalValue += parseInt($(this).val(), 10);\n if ($(this).attr('name') !== self.attr('name')) {\n othersValue += parseInt($(this).val(), 10);\n }\n });\n\n let currentValue = parseInt(self.val(), 10);\n if (totalValue > max) {\n currentValue = max - othersValue;\n self.val(currentValue)\n }\n\n let $output = $(this).closest('.slider').find('output');\n\n $output.val('£' + currentValue)\n });\n}\n// endregion\n\n$(function () {\n // region Scroll to Errors\n let $elementError = $('.form-group.has-error:first');\n if ($elementError.length > 0) {\n // scroll to error\n $('html, body').animate({\n scrollTop: $elementError.offset().top\n }, 100);\n }\n $elementError = $('.alert.alert-danger:first');\n if ($elementError.length > 0) {\n // scroll to error\n $('html, body').animate({\n scrollTop: $elementError.offset().top\n }, 100);\n }\n // endregion\n\n // region Scroll to message if on mobile\n if (window.mobileCheck()) {\n let $elementMessage = $('.alert.alert-danger');\n if ($elementMessage.length > 0) {\n $('html, body').animate({\n scrollTop: $elementMessage.offset().top\n }, 100);\n }\n }\n // endregion\n\n // region Date Picker\n let $datePickers = $('.date_picker');\n if ($datePickers.length > 0) {\n $datePickers.datepicker({\n format: \"dd-mm-yyyy\",\n todayHighlight: true,\n orientation: \"bottom auto\",\n autoclose: true,\n }).on('changeDate', function (selected) {\n $(this).trigger('focusout');\n });\n }\n // endregion\n\n Inputmask().mask($(\"input[data-inputmask]\"));\n});\n\n// region Message Scroll\nlet $chatArea = $('.js-messages');\n\n$(document).ready(function () {\n $chatArea.scrollTop($chatArea.prop('scrollHeight'));\n});\n// endregion\n\n// region Account JS\n$('.container.raf').on('click', '.js-social-whatsapp', function (event) {\n event.preventDefault();\n\n $('.js-social-form').attr('data-href', ($(this).attr('href'))).removeClass('hide');\n}).on('submit', '.js-social-form', function (event) {\n event.preventDefault();\n\n let url = $(this).attr('data-href');\n url = url.replace('[FRIENDS NUMBER]', $(this).find('input').val());\n\n window.open(url, '_blank');\n});\n// endregion\n\n// region Accordion Fix\n// $(document).on('click', '.simple-accordion .collapse-label', function (event) {\n// event.stopPropagation();\n// let $this = $(this);\n// let href;\n//\n// let parent = $this.data('parent');\n// let actives = parent && $(parent).find('.collapse.in');\n//\n// if (actives && actives.length) {\n// actives.collapse('hide');\n// }\n//\n// let target = $this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, ''); //strip for ie7\n//\n// if ($(target).length > 0) {\n// $(target).collapse('toggle');\n// }\n// });\n\n$(document).ready(function () {\n if (window.location.hash !== '' && $(window.location.hash).length > 0) {\n $(window.location.hash).find('.collapse-label').trigger('click');\n }\n});\n// endregion\n\n// region Tabs\n$(document).on('click', '.tabs > li', function () {\n $('.tabs > li > a').removeClass('active');\n $(this).find('a').addClass('active');\n});\n// endregion\n\n// region Claim Form Gift Select\n$(document).on('click', '.radio-wrapper', function (e) {\n // region Address\n let $addressFields = $('.js-address-fields');\n\n let addressCheck = JSON.parse($addressFields.attr('data-check'));\n let requireAddress = addressCheck[$(this).find('input').val()] === '1';\n\n $addressFields.find('input.form-control.js-required')\n .attr('aria-required', requireAddress)\n .attr('required', requireAddress);\n $('input[name=\"ra\"]').val(requireAddress ? 1 : 0);\n\n requireAddress ? $addressFields.removeClass('hide') : $addressFields.addClass('hide');\n // endregion\n\n // region Bank Fields\n let $bankFields = $('.js-bank-fields');\n\n let bankCheck = JSON.parse($bankFields.attr('data-check'));\n let requireBank = bankCheck[$(this).find('input').val()] === '1';\n\n $bankFields.find('input.form-control.js-required')\n .attr('aria-required', requireBank)\n .attr('required', requireBank);\n $('input[name=\"ba\"]').val(requireBank ? 1 : 0);\n\n requireBank ? $bankFields.removeClass('hide') : $bankFields.addClass('hide');\n // endregion\n});\n// endregion\n\n// region Address Select\nif ($('.js-get-address-list').length > 0) {\n $(document).on('click', '.js-get-address-list', function (event) {\n event.preventDefault();\n\n let addressType = $(this).attr('data-type');\n\n let postcode = $('[name=\"address[' + addressType + '][postcode]\"]').val();\n\n if (postcode === '') {\n return;\n }\n\n let $addressListField = $('#address_list_' + addressType);\n\n $.ajax({\n method: 'GET',\n dataType: 'json',\n data: {postcode: postcode},\n url: $(this).attr('data-url'),\n success: function (response) {\n let option = $('')\n .val('')\n .attr('data-all', '')\n .html('Please Select');\n\n $addressListField.find('option').remove();\n $addressListField.append(option);\n $.each(response, function () {\n let display = this.address_1\n + (this.address_2 !== '' && this.address_2 !== null ? ', ' + this.address_2 : '')\n + ', ' + this.city_town;\n\n let option = $('')\n .val(this.id)\n .attr('data-all', JSON.stringify(this))\n .html(display);\n\n $addressListField.append(option);\n $addressListField.closest('.js-address-list').fadeIn();\n });\n\n $addressListField.prop('disabled', false);\n }\n });\n });\n\n $(document).on('change', '.js-address-select', function () {\n if ($(this).find('option:selected').attr('data-all') !== '') {\n let address = JSON.parse($(this).find('option:selected').attr('data-all'));\n\n let addressType = $(this).attr('data-type');\n\n $('[name=\"address[' + addressType + '][address_1]\"]').val(address.address_1);\n $('[name=\"address[' + addressType + '][address_2]\"]').val(address.address_2);\n $('[name=\"address[' + addressType + '][city_town]\"]').val(address.city_town);\n $('[name=\"address[' + addressType + '][county]\"]').val(address.county);\n $('[name=\"address[' + addressType + '][country]\"]').val(address.country);\n }\n });\n}\n// endregion\n\n// region Accessibility\nfunction validateEmail(email) {\n // noinspection RegExpRedundantEscape\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n}\n\nfunction validateFormField() {\n let $this = $(this);\n let value = $this.val().trim();\n let id = $this.attr('id');\n let isRequired = $this[0].hasAttribute('aria-required') && $this.attr('aria-required') === 'true';\n let $confirmation = $('#' + id.replace('_confirmation', ''));\n let $formGroup = $this.closest('.form-group');\n let $errorMessage = $formGroup.find('div[aria-live] p');\n\n let errorMessage = '';\n let isInvalid = false;\n\n if (isRequired && value === '') {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-required');\n } else if ($this.attr('type') === 'email' && !validateEmail(value)) {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-email');\n } else if ($confirmation.length > 0 && $confirmation.val().trim() !== value) {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-confirm');\n } else if ($this[0].hasAttribute('data-inputmask') && !Inputmask().mask('#' + id).isComplete()) {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-inputmask');\n }\n\n $this.attr('aria-invalid', isInvalid);\n\n if (isInvalid) {\n $formGroup.removeClass('has-success').addClass('has-error');\n } else {\n $formGroup.removeClass('has-error').addClass('has-success');\n }\n\n $errorMessage.text(errorMessage);\n}\n\n// $(document).on('focusout', 'input:not([aria-disable=\"true\"])', validateFormField);\n// $(document).on('focusout', 'select:not([aria-disable=\"true\"])', validateFormField);\n// endregion\n\n// region Accessibility BackToTop scroll to top of the page with focus\n$(document).on('click', '#js-scroll-up', function (e) {\n e.preventDefault();\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n setTimeout(function () {\n if (screen.width >= 768) {\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\n } else {\n // $('.js-accessible-hamburger').find('a').focus();\n document.getElementById(\"js-scrolled-focus-mobile\").focus();\n }\n }, 1)\n\n});\n// endregion\n\n$(document).on('click', 'form .btn[type=\"submit\"]', function (event) {\n if (window.mobileCheck()) {\n let invalid = $('form input:invalid, form select:invalid');\n\n if (invalid.length > 0) {\n event.preventDefault();\n event.stopPropagation();\n\n $('html, body').animate({\n scrollTop: $(invalid[0]).offset().top - 100\n }, 100);\n\n invalid[0].reportValidity();\n\n return false;\n }\n }\n});\n","$(document).ready(function () {\n let $cookieContainer = $('.js-cookie-modal-container');\n\n if ($cookieContainer.attr('data-can-open') === 'true') {\n $cookieContainer.addClass('open');\n $('body').addClass('open');\n trapKeyboardFocus('#js-cookie-banner-modal');\n }\n});\n\n$(document).on('click', '.js-cookie-details', function (event) {\n event.preventDefault();\n\n let $cookieBarContainer = $('.js-cookie-sidebar');\n $cookieBarContainer.removeClass('hide');\n $('.js-cookie-modal-container').addClass('show-sidebar');\n\n // when banner is triggered & open, trap focus within for keyboard users (accessibility)\n $cookieBarContainer.toggleClass('open');\n if ($cookieBarContainer.hasClass('open')) {\n\n $cookieBarContainer.removeAttr('aria-hidden');\n // set modal content exposed to accessibility tree\n $('.js-close-banner').attr('tabindex', '0').removeAttr('aria-hidden');\n $('.js-banner-item').attr('tabindex', '0').removeAttr('aria-hidden');\n trapKeyboardFocus('#js-cookie-banner-sidebar');\n } else {\n $cookieBarContainer.find('.js-banner-item').attr('tabindex', '-1').attr('aria-hidden', true);\n $cookieBarContainer.attr('aria-hidden', true);\n if (screen.width >= 768) {\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\n } else {\n document.getElementById(\"js-scrolled-focus-mobile\").focus();\n }\n }\n});\n\n$(document).on('click', '.js-cookie-details-close', function (event) {\n event.preventDefault();\n\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('show-sidebar');\n});\n\n$(document).on('click', '.js-cookie-sidebar-toggle', function (event) {\n event.preventDefault();\n\n let $this = $(this);\n\n let value = $this.attr('data-value');\n\n if (value === '0') {\n $this.removeClass('fa-toggle-off');\n $this.addClass('fa-toggle-on');\n $this.attr('data-value', 1);\n } else {\n $this.addClass('fa-toggle-off');\n $this.removeClass('fa-toggle-on');\n $this.attr('data-value', 0);\n }\n});\n\n$(document).on('click', '.js-cookie-toggle-details', function (event) {\n event.preventDefault();\n\n let category = $(this).attr('data-category');\n\n $('.js-cookie-sidebar-content-list[data-category=\"' + category + '\"]').removeClass('no-show');\n});\n\n$(document).on('click', '.js-cookie-sidebar-list-hide', function (event) {\n event.preventDefault();\n\n $(this).closest('.js-cookie-sidebar-content-list').addClass('no-show');\n});\n\n// change the state of switch checkbox in banner on click\nfunction toggleCookieSwitch(self) {\n let state = $(self).attr('aria-checked');\n let isState = (state === 'true');\n $(self).attr('aria-checked', !isState)\n $(self).attr('data-value', !isState ? 1 : 0)\n}\n\n$(document).on('click', '.cookie-sidebar-toggle', function () {\n toggleCookieSwitch(this);\n});\n\n// change the state of switch checkbox in sidebar on press enter, left or right\n$(document).on('keyup', '.cookie-sidebar-toggle', function (e) {\n if ((e.keyCode ? e.keyCode : e.which) === 13 || (e.keyCode ? e.keyCode : e.which) === 37 || (e.keyCode ? e.keyCode : e.which) === 39) {\n $(this).trigger('click');\n }\n});\n\n$(document).on('click', '.js-cookie-accept-all', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $('.js-cookie-url').attr('data-url'),\n dataType: 'json',\n data: {all: 'true'},\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('open');\n $('body').removeClass('open');\n $('.js-accessible-logo').find('a').focus();\n },\n });\n});\n\n$(document).on('click', '.js-cookie-save', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $('.js-cookie-url').attr('data-url'),\n dataType: 'json',\n data: {\n strictly_necessary: $('.js-cookie-sidebar-toggle[data-category=\"strictly_necessary\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n first_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"first_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n third_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"third_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n functional: $('.js-cookie-sidebar-toggle[data-category=\"functional\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n targeting: $('.js-cookie-sidebar-toggle[data-category=\"targeting\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n },\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('open');\n $('body').removeClass('open');\n $('.js-accessible-logo').find('a').focus();\n },\n });\n});\n\n$(document).on('click', '.js-cookie-reject', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $('.js-cookie-url').attr('data-url'),\n dataType: 'json',\n data: {\n strictly_necessary: 'disabled',\n first_party_performance: 'disabled',\n third_party_performance: 'disabled',\n functional: 'disabled',\n targeting: 'disabled',\n },\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('open');\n $('body').removeClass('open');\n $('.js-accessible-logo').find('a').focus();\n },\n });\n});\n\n$(document).on('click', '.js-toggle-cookie-banner', function (event) {\n event.preventDefault();\n $('.js-cookie-modal-container').addClass('open').removeClass('show-sidebar');\n\n if ($('.js-cookie-sidebar').hasClass(\"d-none\")) {\n $('.cookie-modal-overlay').css('z-index', 90);\n }\n});\n\nfunction toggleActive(elem, button) {\n if (elem.classList.contains('active')) {\n elem.classList.remove('active');\n button.ariaExpanded = false;\n } else {\n elem.classList.add('active');\n button.ariaExpanded = true;\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n document.querySelectorAll('.ck-accordion-wrapper').forEach(elem => {\n let header = elem.querySelector('.ck-accordion-trigger');\n let chevron = elem.querySelector('.ck-accordion-header-chevron');\n let description = elem.querySelector('.ck-accordion-header-desc');\n let button = elem.querySelector('.ck-accordion-trigger');\n\n header.addEventListener('click', () => toggleActive(elem, button));\n chevron.addEventListener('click', () => toggleActive(elem, button));\n description.addEventListener('click', () => toggleActive(elem, button));\n });\n});\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * FingerprintJS Pro v3.8.6 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com)\n */\n\nimport{__spreadArray as e,__rest as t,__assign as n}from\"tslib\";function r(e){for(var t=\"\",n=0;n0){var r=e[n].toLowerCase();r!==e[n]?t+=\" \".concat(r):t+=e[n]}else t+=e[n].toUpperCase();return t}function o(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}var i={default:\"endpoint\"},u={default:\"tlsEndpoint\"},a=\"Client timeout\",R=\"Network connection error\",c=\"Network request aborted\",s=\"Response cannot be parsed\",E=\"Blocked by CSP\",f=\"The endpoint parameter is not a valid URL\",d=/*#__PURE__*/r(\"WrongRegion\"),l=/*#__PURE__*/r(\"SubscriptionNotActive\"),_=/*#__PURE__*/r(\"UnsupportedVersion\"),p=/*#__PURE__*/r(\"InstallationMethodRestricted\"),v=/*#__PURE__*/r(\"HostnameRestricted\"),O=/*#__PURE__*/r(\"IntegrationFailed\"),I=\"API key required\",h=\"API key not found\",N=\"API key expired\",T=\"Request cannot be parsed\",m=\"Request failed\",w=\"Request failed to process\",A=\"Too many requests, rate limit exceeded\",P=\"Not available for this origin\",y=\"Not available with restricted header\",D=I,S=h,L=N,U=\"3.8.6\",b=\"9319\";function g(t,n){var r=[];return function(t,n){var r=5,o=(s=t,f=e([],s,!0),{current:function(){return f[0]},postpone:function(){var e=f.shift();void 0!==e&&f.push(e)},exclude:function(){f.shift()}}),i=(a=100,R=3e3,c=0,function(){return Math.random()*Math.min(R,a*Math.pow(2,c++))}),u=o.current();var a,R,c;var s,f;if(void 0===u)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));var d=function(e,t){return n(e).catch((function(e){if(t+1>=r)throw e;!function(e){if(!(e instanceof Error))return!1;var t=e.message;return t===E||t===b}(e)?o.postpone():o.exclude();var n,u=o.current();if(void 0===u)throw e;return(n=i(),new Promise((function(e){return setTimeout(e,n)}))).then((function(){return d(u,t+1)}))}))};return d(u,0)}(t,(function(e){var t=new Date,o=function(n){return r.push({url:e,startedAt:t,finishedAt:new Date,error:n})},i=n(e);return i.then((function(){return o()}),o),i})).then((function(e){return[e,r]}))}var C=\"https://fpnpmcdn.net/v//loader_v.js\",K=C,M=\"Failed to load the JS script of the agent\";function B(e){var r;e.scriptUrlPattern;var i=e.token,u=e.apiKey,a=void 0===u?i:u,R=t(e,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=null!==(r=o(e,\"scriptUrlPattern\"))&&void 0!==r?r:C,s=function(){var e=[],t=function(){e.push({time:new Date,state:document.visibilityState})},n=function(e,t,n,r){return e.addEventListener(t,n,r),function(){return e.removeEventListener(t,n,r)}}(document,\"visibilitychange\",t);return t(),[e,n]}(),E=s[0],f=s[1];return Promise.resolve().then((function(){if(!a||\"string\"!=typeof a)throw new Error(I);var e=function(e,t){return(Array.isArray(e)?e:[e]).map((function(e){return function(e,t){var n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(function(e){return\"\"===e?\"3\":\"\"===e?n(t):\"\"===e?n(U):e}))}(String(e),t)}))}(c,a);return g(e,F)})).catch((function(e){throw f(),function(e){if(e instanceof Error&&e.message===b)return new Error(M);return e}(e)})).then((function(e){var t=e[0],r=e[1];return f(),t.load(n(n({},R),{ldi:{attempts:r,visibilityStates:E}}))}))}function F(e){return function(e,t,n,r){var o,i=document,u=\"securitypolicyviolation\",a=function(t){var n=new URL(e,location.href),r=t.blockedURI;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(o=t,R())};i.addEventListener(u,a);var R=function(){return i.removeEventListener(u,a)};return null==r||r.then(R,R),Promise.resolve().then(t).then((function(e){return R(),e}),(function(e){return new Promise((function(e){return setTimeout(e)})).then((function(){if(R(),o)return n(o);throw e}))}))}(e,(function(){return function(e){return new Promise((function(t,n){var r=document.createElement(\"script\"),o=function(){var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=function(){o(),t()},r.onerror=function(){o(),n(new Error(M))},r.async=!0,r.src=e,i.appendChild(r)}))}(e)}),(function(){throw new Error(E)})).then(V)}function V(){var e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n,r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(b);return n}var k={load:B,defaultScriptUrlPattern:K,ERROR_SCRIPT_LOAD_FAIL:M,ERROR_API_KEY_EXPIRED:N,ERROR_API_KEY_INVALID:h,ERROR_API_KEY_MISSING:I,ERROR_BAD_REQUEST_FORMAT:T,ERROR_BAD_RESPONSE_FORMAT:s,ERROR_CLIENT_TIMEOUT:a,ERROR_CSP_BLOCK:E,ERROR_FORBIDDEN_ENDPOINT:v,ERROR_FORBIDDEN_HEADER:y,ERROR_FORBIDDEN_ORIGIN:P,ERROR_GENERAL_SERVER_FAILURE:m,ERROR_INSTALLATION_METHOD_RESTRICTED:p,ERROR_INTEGRATION_FAILURE:O,ERROR_INVALID_ENDPOINT:f,ERROR_NETWORK_ABORT:c,ERROR_NETWORK_CONNECTION:R,ERROR_RATE_LIMIT:A,ERROR_SERVER_TIMEOUT:w,ERROR_SUBSCRIPTION_NOT_ACTIVE:l,ERROR_TOKEN_EXPIRED:L,ERROR_TOKEN_INVALID:S,ERROR_TOKEN_MISSING:D,ERROR_UNSUPPORTED_VERSION:_,ERROR_WRONG_REGION:d,defaultEndpoint:i,defaultTlsEndpoint:u};export{N as ERROR_API_KEY_EXPIRED,h as ERROR_API_KEY_INVALID,I as ERROR_API_KEY_MISSING,T as ERROR_BAD_REQUEST_FORMAT,s as ERROR_BAD_RESPONSE_FORMAT,a as ERROR_CLIENT_TIMEOUT,E as ERROR_CSP_BLOCK,v as ERROR_FORBIDDEN_ENDPOINT,y as ERROR_FORBIDDEN_HEADER,P as ERROR_FORBIDDEN_ORIGIN,m as ERROR_GENERAL_SERVER_FAILURE,p as ERROR_INSTALLATION_METHOD_RESTRICTED,O as ERROR_INTEGRATION_FAILURE,f as ERROR_INVALID_ENDPOINT,c as ERROR_NETWORK_ABORT,R as ERROR_NETWORK_CONNECTION,A as ERROR_RATE_LIMIT,M as ERROR_SCRIPT_LOAD_FAIL,w as ERROR_SERVER_TIMEOUT,l as ERROR_SUBSCRIPTION_NOT_ACTIVE,L as ERROR_TOKEN_EXPIRED,S as ERROR_TOKEN_INVALID,D as ERROR_TOKEN_MISSING,_ as ERROR_UNSUPPORTED_VERSION,d as ERROR_WRONG_REGION,k as default,i as defaultEndpoint,K as defaultScriptUrlPattern,u as defaultTlsEndpoint,B as load};\n","// In the BP this should be empty. Enter your custom JS here\n\nimport FingerprintJS from '@fingerprintjs/fingerprintjs-pro'\nimport 'select2'\n\n$('.js-select-2').select2()\n$('#purchase_date_modal').modal('show')\n\nconst productForm = document.forms.length && document.forms[0].id == 'product-form' ? document.forms[0] : null\n\nif (productForm) {\n /** @type HTMLSelectElement */\n const productDropdown = productForm.product_id\n /** @type HTMLSelectElement */\n const retailerDropdown = productForm.retailer_id\n\n const req = new XMLHttpRequest()\n\n function showError() {\n alert('Unexpected error occurred, please try again later.')\n }\n\n req.addEventListener('load', function () {\n if (this.status != 200) {\n showError()\n return\n }\n\n const retailers = JSON.parse(this.responseText)\n\n // Remove all options except \"Please Select\"\n while (retailerDropdown.options.length != 1) {\n retailerDropdown.options.remove(1)\n }\n\n for (const retailerId in retailers) {\n retailerDropdown.add(new Option(retailers[retailerId], retailerId))\n }\n })\n\n req.addEventListener('error', showError)\n\n /** @this HTMLSelectElement */\n function populateRetailers() {\n retailerDropdown.disabled = !this.validity.valid\n if (retailerDropdown.disabled) {\n return\n }\n\n req.open('GET', productForm.getAttribute('data-ajax-url').replace('product-id', this.value))\n req.send()\n }\n\n $(productDropdown).on('select2:select', populateRetailers)\n}\n\n/** @type HTMLSelectElement */\nconst returnReasonDropdown = document.getElementById('return_reason')\n\nif (returnReasonDropdown) {\n if (!document.getElementById('purchased_at').value) {\n document.getElementById('purchased_at').value = document.getElementById('js-purchase-date').value\n }\n\n /** @type HTMLTextAreaElement */\n const returnReasonOther = document.getElementById('return_reason_other')\n returnReasonOther.required = true\n\n if (returnReasonOther.labels) returnReasonOther.labels[0].textContent += ' *'\n\n /** @this HTMLSelectElement */\n function toggleOtherReturnReason() {\n if (this.value.toLowerCase() == 'other') {\n returnReasonOther.disabled = false\n } else {\n returnReasonOther.disabled = true\n\n if (~this.value.toLowerCase().indexOf('faulty')) {\n $('#faulty_product_modal').modal('show')\n }\n }\n\n returnReasonOther.parentElement.parentElement.hidden = returnReasonOther.disabled\n }\n\n returnReasonDropdown.addEventListener('change', toggleOtherReturnReason)\n toggleOtherReturnReason.call(returnReasonDropdown)\n}\n\nFingerprintJS.load({ token: process.env.MIX_FINGERPRINT_KEY, region: 'eu' })\n .then(fp => fp.get())\n .then(result => navigator.sendBeacon(document.head.dataset.visitorUrl, result.visitorId));\n","//from Node\nrequire('js.cookie');\nrequire('bootstrap-datepicker');\nrequire('swiper');\n\n//from local\nrequire('./radio');\nrequire('../common/password-strength');\nrequire('../common/countdown');\nrequire('./base');\nrequire('./cookie-banner');\nrequire('./swiper-setup');\nrequire('./taketime');\n// Enter the JS for your build here\nrequire('./custom');\n","let KEYCODE = {\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39,\n SPACE: 32,\n UP: 38\n};\n\nwindow.addEventListener('load', function () {\n let radioButtons = document.querySelectorAll('[role=radio]');\n\n for (let i = 0; i < radioButtons.length; i++) {\n let rb = radioButtons[i];\n\n rb.addEventListener('click', clickRadioGroup);\n rb.addEventListener('keydown', keyDownRadioGroup);\n rb.addEventListener('focus', focusRadioButton);\n rb.addEventListener('blur', blurRadioButton);\n }\n});\n\nfunction firstRadioButton(node) {\n\n let first = node.parentNode.firstChild;\n\n while (first) {\n if (first.nodeType === Node.ELEMENT_NODE) {\n if (first.getAttribute(\"role\") === 'radio') return first;\n }\n first = first.nextSibling;\n }\n\n return null;\n}\n\nfunction lastRadioButton(node) {\n let last = node.parentNode.lastChild;\n\n while (last) {\n if (last.nodeType === Node.ELEMENT_NODE) {\n if (last.getAttribute(\"role\") === 'radio') return last;\n }\n last = last.previousSibling;\n }\n\n return last;\n}\n\nfunction nextRadioButton(node) {\n let next = node.nextSibling;\n\n while (next) {\n if (next.nodeType === Node.ELEMENT_NODE) {\n if (next.getAttribute(\"role\") === 'radio') return next;\n }\n next = next.nextSibling;\n }\n\n return null;\n}\n\nfunction previousRadioButton(node) {\n\n let prev = node.previousSibling;\n\n while (prev) {\n if (prev.nodeType === Node.ELEMENT_NODE) {\n if (prev.getAttribute(\"role\") === 'radio') return prev;\n }\n prev = prev.previousSibling;\n }\n\n return null;\n}\n\nfunction setRadioButton(node, state) {\n if (state === 'true') {\n node.tabIndex = 0;\n node.setAttribute('aria-checked', 'true');\n node.focus();\n $(node).find('input').trigger('click');\n $(node).find('input').attr('checked', 'checked');\n } else {\n node.setAttribute('aria-checked', 'false');\n $(node).find('input').attr('checked', false);\n node.tabIndex = -1;\n }\n}\n\nfunction clickRadioGroup(event) {\n let type = event.type;\n\n if (type === 'click') {\n // If either enter or space is pressed, execute the funtion\n\n let node = event.currentTarget;\n\n let radioButton = firstRadioButton(node);\n\n while (radioButton) {\n setRadioButton(radioButton, \"false\");\n radioButton = nextRadioButton(radioButton);\n }\n\n setRadioButton(node, \"true\");\n\n event.preventDefault();\n event.stopPropagation();\n }\n}\n\nfunction keyDownRadioGroup(event) {\n let type = event.type;\n let next = false;\n\n if (type === \"keydown\") {\n let node = event.currentTarget;\n\n switch (event.keyCode) {\n case KEYCODE.DOWN:\n case KEYCODE.RIGHT:\n next = nextRadioButton(node);\n if (!next) next = firstRadioButton(node); //if node is the last node, node cycles to first.\n break;\n\n case KEYCODE.UP:\n case KEYCODE.LEFT:\n next = previousRadioButton(node);\n if (!next) next = lastRadioButton(node); //if node is the last node, node cycles to first.\n break;\n\n case KEYCODE.SPACE:\n next = node;\n break;\n }\n\n if (next) {\n let radioButton = firstRadioButton(node);\n\n while (radioButton) {\n setRadioButton(radioButton, \"false\");\n radioButton = nextRadioButton(radioButton);\n }\n\n setRadioButton(next, \"true\");\n\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\nfunction focusRadioButton(event) {\n event.currentTarget.className += ' focus';\n}\n\nfunction blurRadioButton(event) {\n event.currentTarget.className = event.currentTarget.className.replace(' focus', '');\n}\n","import Swiper from 'swiper';\n\nfunction generateUUID() { // Public Domain/MIT\n var d = new Date().getTime();\n if (typeof performance !== 'undefined' && typeof performance.now === 'function'){\n d += performance.now(); //use high-precision timer if available\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n}\n\nvar $swiperElements = $('.swiper-container');\nif($swiperElements.length > 0) {\n $swiperElements.each(function() {\n let uuid = generateUUID();\n let maxSlides = $(this)[0].hasAttribute('data-slides') ? parseInt($(this).attr('data-slides'), 10) : 4;\n $(this).attr('data-id', uuid);\n\n var swiper = new Swiper($(this)[0], {\n slidesPerView: maxSlides,\n spaceBetween: 15,\n autoHeight: true,\n loop: true,\n navigation: {\n nextEl: '[data-id=\"'+uuid+'\"] .swiper-button-next',\n prevEl: '[data-id=\"'+uuid+'\"] .swiper-button-prev'\n },\n breakpoints: {\n 1200: {\n slidesPerView: maxSlides,\n spaceBetween: 15\n },\n 1024: {\n slidesPerView: 4,\n spaceBetween: 15\n },\n 768: {\n slidesPerView: 3,\n spaceBetween: 15\n },\n 480: {\n slidesPerView: 2,\n spaceBetween: 15\n },\n 320: {\n slidesPerView: 1,\n spaceBetween: 15\n }\n }\n });\n\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-prev', function() {\n swiper.slidePrev();\n });\n\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-next', function() {\n swiper.slideNext();\n });\n });\n}\n\n$(document).ready(function() {\n $('.lazyload-bg').each(function() {\n var lazy = $(this);\n var src = lazy.attr('data-src');\n\n lazy.css('background-image', 'url(\"' + src + '\")');\n lazy.removeAttr('data-src');\n lazy.removeClass('lazyload-bg');\n });\n});\n","// region Offer Terms Modal Button\n$(document).on('click', '.js-offer-modal-btn', function (event) {\n event.preventDefault();\n\n let $this = $(this);\n let modalElement = $('.js-offer-modal');\n\n $.ajax({\n method: 'get',\n dataType: 'json',\n url: $this.attr('href'),\n success: function (response) {\n modalElement.html('');\n\n if (response.success) {\n modalElement.append(response.content);\n }\n\n modalElement.find('.modal').modal('show');\n }\n });\n});\n// endregion\n\nfunction setQueryStringParameter(name, value) {\n const params = new URLSearchParams(window.location.search);\n params.set(name, value);\n window.history.replaceState({}, \"\", decodeURIComponent(`${window.location.pathname}?${params}`));\n}\n\n/* region Select/Remove Filter */\n$(document).on('click', '.facets .js-toggle-filter, .js-search-page .js-toggle-filter, .js-search-page .js-remove-filter', function () {\n let url = $(this).attr('data-url');\n\n if (!$(this).hasClass('disabled')) {\n if (url) {\n window.location = url;\n }\n }\n});\n/* endregion */\n\n/* region Toggle Filter Children */\n$(document).on('click', '.has-children:not(.checkbox-container)', function () {\n $(this).toggleClass('active').next().slideToggle();\n});\n/* endregion */\n\n// region Sort Select\n$(document).on('change', 'select.sortBy', function () {\n let url = $(this).val();\n if (url) {\n window.location = url;\n }\n});\n// endregion\n\n// region Load More - Search Page\n$(document).on('click', '.js-load-more', function () {\n let $this = $(this);\n\n $('.loading-icon').show();\n\n $.ajax({\n method: 'GET',\n dataType: 'json',\n url: $(this).attr('data-url'),\n success: function (response) {\n if (response.data) {\n $('.js-current-total').text(response.count);\n $this.attr('data-url', response.next_link)\n\n $('.loading-icon').hide();\n\n // region Remove focus\n $this.focus(function () {\n this.blur();\n });\n // endregion\n\n $('.js-list-results').append(response.data);\n\n // region Call lazyload again\n $('.lazyload-bg').each(function () {\n let lazy = $(this);\n let src = lazy.attr('data-src');\n lazy.css('background-image', 'url(\"' + src + '\")');\n lazy.removeAttr('data-src');\n lazy.removeClass('lazyload-bg');\n });\n // endregion\n\n setQueryStringParameter('page', response.current_page);\n\n if (response.next_link !== '') {\n $this.remove();\n }\n } else {\n $this.remove();\n }\n }\n });\n});\n// endregion\n\n// region Top search - suggestions dropdown\nlet f = -1;\nlet xhr;\n\n$(document).on('keyup paste', '.js-search-field', function (event) {\n if (event.keyCode === 40 || event.keyCode === 38 || event.keyCode === 13 || event.keyCode === 39 || event.keyCode === 37) {\n event.preventDefault();\n return false;\n }\n let $form = $(this).closest('form');\n let suggestionList = $form.find('.js-suggestions-list');\n\n let searchTerm = $(this).val().replace('[^a-zA-Z0-9\\'\\s]', '');\n let searchType = $form.find('.search-type');\n\n if (xhr) {\n xhr.abort();\n }\n\n xhr = $.ajax({\n method: 'GET',\n dataType: 'json',\n data: {s: searchTerm},\n url: $(this).attr('data-url'),\n success: function (response) {\n if (response.data.length > 0) {\n let html = '';\n $(response.data).each(function () {\n html += this.list_html;\n });\n suggestionList.html(html);\n suggestionList.addClass('active').show();\n } else {\n suggestionList.removeClass('active').html('').hide();\n f = -1;\n }\n\n searchType.val(response.type);\n\n // Postcode\n if (response.type === 'postcode' && response.coordinates.lat && response.coordinates.lng) {\n $('input[name=\"coordinates\"]').val(response.coordinates.lat + ',' + response.coordinates.lng);\n }\n }\n });\n\n})\n .on('keydown', '.js-search-field', function (e) {\n let $form = $(this).closest('form');\n let suggestionList = $form.find('.js-suggestions-list');\n\n /*If the arrow DOWN key*/\n if (e.keyCode === 40) {\n f++;\n currentItem(suggestionList);\n } else if (e.keyCode === 38) {\n /*If the arrow UP key is pressed*/\n f--;\n currentItem(suggestionList);\n } else if (e.keyCode === 13) {\n /*If the ENTER key is pressed*/\n e.preventDefault();\n\n if (f > -1) {\n /*and simulate a click on the \"active\" item:*/\n suggestionList.find('.item.active').trigger('click');\n } else {\n $('.js-search-btn').trigger('click');\n }\n }\n });\n\n// Hide the auto complete box\n$(document).on('click', function () {\n let suggestionList = $('.js-suggestions-list');\n\n if (suggestionList.find('.item').length && suggestionList.hasClass('active')) {\n suggestionList.empty();\n f = -1;\n suggestionList.hide();\n }\n});\n\nfunction currentItem(element) {\n element.find('.item.active').removeClass('active');\n let t = element.find('.item').length;\n if (f >= t) {\n f = 0;\n }\n\n if (f < 0) {\n f = (t - 1);\n }\n\n element.find('.item').eq(f).addClass('active').focus();\n}\n\nfunction menu_item_link(element) {\n window.location = $(element).attr('data-url');\n}\n\n$(document).on('click', '.item.active', function () {\n menu_item_link(this);\n});\n\n$(document).on('click', '.js-suggestions-list .item', function () {\n menu_item_link(this);\n});\n\n// endregion\n\n$(document).on('click', '.js-filters-modal', function () {\n $.ajax({\n method: 'GET',\n dataType: 'json',\n url: $('.js-filters-modal-container').attr('data-url'),\n data: {route: $('.js-filters-modal-container').attr('data-route')},\n success: function (response) {\n $('.js-filters-modal-container').attr('data-url', response.facetUrl);\n $('body').addClass('modal-open');\n\n let $filterModalContainer = $('.js-filters-modal-container');\n $filterModalContainer.html(response.facet);\n $filterModalContainer.css({display: 'block', height: $(window).height()});\n }\n });\n});\n\n$(document).on('click', '.js-close-filter-modal', function (event) {\n event.preventDefault();\n\n $('body').removeClass('modal-open');\n\n let $filterModalContainer = $('.js-filters-modal-container');\n $filterModalContainer.html('');\n $filterModalContainer.css({display: 'none', height: $(window).height()});\n});\n\n// #########################################################\n\n// Element\nlet $localSearchMap = $('.local-search-map');\nlet $zeroAlert = $('.zero-alert');\nlet $redraw = $('#redraw');\n\n// Init Vars\nlet markers, bounds, infoWindow, map, lat, lng, coords;\n\nfunction initMap() {\n // from initial page load\n lat = parseFloat($('#local-search-map input[name=\"latitude\"]').val());\n lng = parseFloat($('#local-search-map input[name=\"longitude\"]').val());\n\n // make google maps friendly\n coords = {lat: lat, lng: lng};\n\n $zeroAlert.hide();\n\n if ($localSearchMap.length > 0) {\n bounds = new google.maps.LatLngBounds();\n infoWindow = new google.maps.InfoWindow();\n\n map = new google.maps.Map($localSearchMap[0], {\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n center: coords,\n zoom: 12,\n styles: [\n {\n featureType: \"poi\",\n elementType: \"labels\",\n stylers: [\n {\n visibility: \"off\"\n }\n ]\n }\n ]\n });\n\n if (\"geolocation\" in navigator) {\n navigator.geolocation.getCurrentPosition(function (position) {\n let pos = {\n lat: position.coords.latitude,\n lng: position.coords.longitude\n };\n\n $('#local-search-map input[name=\"lat\"]').val(position.coords.latitude)\n $('#local-search-map input[name=\"lng\"]').val(position.coords.longitude)\n map.setCenter(pos);\n // submitRequest();\n }, showGeoError);\n }\n\n addSearchedMarker(coords);\n\n // region Event Listener\n google.maps.event.addListener(map, 'idle', function () {\n $('#sw-lat').val(map.getBounds().getSouthWest().lat());\n $('#sw-lng').val(map.getBounds().getSouthWest().lng());\n $('#ne-lat').val(map.getBounds().getNorthEast().lat());\n $('#ne-lng').val(map.getBounds().getNorthEast().lng());\n\n // some events do not require a reload of data (eg. infoWindow popup that moves the map)\n if (parseInt($redraw.val(), 10) === 1) {\n submitRequest();\n }\n\n // in case we set not to redraw last time around, set it back to true\n $redraw.val(1);\n });\n // endregion\n }\n}\n\nwindow.initMap = initMap;\n\n/**\n * This is the searched location that stays the same until another search is performed\n * @param {*} coords\n */\nfunction addSearchedMarker(coords) {\n let searched = new google.maps.Marker({\n position: coords\n });\n searched.setMap(map);\n}\n\nfunction setIconsOnTheMap(response) {\n if (markers !== undefined) {\n for (let i = 0; i < markers.length; i++) {\n markers[i].setMap(null);\n }\n }\n\n let locationsArray = response.locations;\n\n // region Sneaky call to show hide zero results alert\n if (locationsArray.length === 0) {\n $zeroAlert.show();\n } else {\n $zeroAlert.hide();\n }\n // endregion\n\n let coordinates;\n\n markers = locationsArray.map(function (location, i) {\n coordinates = {lat: parseFloat(location.latitude), lng: parseFloat(location.longitude)};\n\n let icon = {\n url: location.images.icon,\n scaledSize: new google.maps.Size(32, 32),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(16, 16)\n };\n\n let marker = new google.maps.Marker({position: coordinates, icon: icon});\n\n // region Click Event\n google.maps.event.addListener(marker, 'click', (function (marker) {\n return function () {\n infoWindow.setContent(location.block);\n infoWindow.open(map, marker);\n $('#redraw').val(0);\n }\n })(marker, i));\n // endregion\n\n return marker;\n });\n\n for (let l = 0; l < markers.length; l++) {\n markers[l].setMap(map);\n }\n\n $('.js-results-count').html(markers.length);\n}\n\n/**\n * used to get data from the server and update the map and filters\n */\nfunction submitRequest(url) {\n $('#loading-map').show();\n\n // region Build URL\n url = url === undefined ? $('.js-map-search').attr('data-url') : url;\n\n if (url.indexOf('lat') === -1) {\n if (url.indexOf('?') !== -1) {\n url += '&';\n } else {\n url += '?';\n }\n\n url += 'lat=' + $('input[name=\"latitude\"]').val();\n url += '&lng=' + $('input[name=\"longitude\"]').val();\n url += '&ne_lat=' + $('input[name=\"ne_latitude\"]').val();\n url += '&ne_lng=' + $('input[name=\"ne_longitude\"]').val();\n url += '&sw_lat=' + $('input[name=\"sw_latitude\"]').val();\n url += '&sw_lng=' + $('input[name=\"sw_longitude\"]').val();\n url += '&area=' + $('input[name=\"area\"]').val();\n }\n // endregion\n\n // region Make request to get map data\n $.ajax({\n method: 'get',\n url: url,\n dataType: 'json',\n headers: {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n success: function (response) {\n // update the map and icons\n setIconsOnTheMap(response);\n\n // update the side menu filters\n if(response.filterBar !== '') {\n $('#filter-items').html(response.filterBar);\n $('.filter-bar').removeClass('hide');\n }\n\n // take down the loading div\n $('#loading-map').hide();\n },\n error: function (xhr, ajaxOptions, thrownError) {\n // take down the loading div\n $('#loading-map').hide();\n }\n });\n // endregion\n}\n\n// TODO Show error and don't redirect\nfunction showGeoError(error, redirectTo) {\n redirectTo = redirectTo === undefined ? null : redirectTo;\n\n let x;\n switch (error.code) {\n case error.PERMISSION_DENIED:\n x = \"User denied the request for Geolocation.\";\n break;\n case error.POSITION_UNAVAILABLE:\n x = \"Location information is unavailable.\";\n break;\n case error.TIMEOUT:\n x = \"The request to get user location timed out.\";\n break;\n case error.UNKNOWN_ERROR:\n x = \"An unknown error occurred.\";\n break;\n }\n // console.log(x);\n if (redirectTo === 'local-offers') {\n return window.location = localOffersUrl;\n }\n}\n\n$(document).on('click', '.js-local-search-map .js-toggle-filter, .js-local-search-map .js-remove-filter', function () {\n let url = $(this).attr('data-url');\n\n if (!$(this).hasClass('disabled')) {\n if (url) {\n $('.js-map-search').attr('data-url', url);\n\n submitRequest($(this).attr('data-url'));\n }\n }\n});\n","/*!\n * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!Array.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0){\n\t\t\tthis.component = false;\n }\n\n\t\tif (this.o.isInline === null){\n\t\t\tthis.isInline = !this.component && !this.isInput;\n\t\t} else {\n\t\t\tthis.isInline = this.o.isInline;\n\t\t}\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!Array.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!Array.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.update();\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif (typeof $.uniqueSort === \"function\") {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || \"\").length > 0) {\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tisInline: null,\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.10.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","// Use strict mode (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)\n\"use strict\";\n\n\n// Requires\nvar Typo = require(\"typo-js\");\n\n\n// Create function\nfunction CodeMirrorSpellChecker(options) {\n\t// Initialize\n\toptions = options || {};\n\n\n\t// Verify\n\tif(typeof options.codeMirrorInstance !== \"function\" || typeof options.codeMirrorInstance.defineMode !== \"function\") {\n\t\tconsole.log(\"CodeMirror Spell Checker: You must provide an instance of CodeMirror via the option `codeMirrorInstance`\");\n\t\treturn;\n\t}\n\n\n\t// Because some browsers don't support this functionality yet\n\tif(!String.prototype.includes) {\n\t\tString.prototype.includes = function() {\n\t\t\t\"use strict\";\n\t\t\treturn String.prototype.indexOf.apply(this, arguments) !== -1;\n\t\t};\n\t}\n\n\n\t// Define the new mode\n\toptions.codeMirrorInstance.defineMode(\"spell-checker\", function(config) {\n\t\t// Load AFF/DIC data\n\t\tif(!CodeMirrorSpellChecker.aff_loading) {\n\t\t\tCodeMirrorSpellChecker.aff_loading = true;\n\t\t\tvar xhr_aff = new XMLHttpRequest();\n\t\t\txhr_aff.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff\", true);\n\t\t\txhr_aff.onload = function() {\n\t\t\t\tif(xhr_aff.readyState === 4 && xhr_aff.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.aff_data = xhr_aff.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr_aff.send(null);\n\t\t}\n\n\t\tif(!CodeMirrorSpellChecker.dic_loading) {\n\t\t\tCodeMirrorSpellChecker.dic_loading = true;\n\t\t\tvar xhr_dic = new XMLHttpRequest();\n\t\t\txhr_dic.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic\", true);\n\t\t\txhr_dic.onload = function() {\n\t\t\t\tif(xhr_dic.readyState === 4 && xhr_dic.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.dic_data = xhr_dic.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr_dic.send(null);\n\t\t}\n\n\n\t\t// Define what separates a word\n\t\tvar rx_word = \"!\\\"#$%&()*+,-./:;<=>?@[\\\\]^_`{|}~ \";\n\n\n\t\t// Create the overlay and such\n\t\tvar overlay = {\n\t\t\ttoken: function(stream) {\n\t\t\t\tvar ch = stream.peek();\n\t\t\t\tvar word = \"\";\n\n\t\t\t\tif(rx_word.includes(ch)) {\n\t\t\t\t\tstream.next();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\twhile((ch = stream.peek()) != null && !rx_word.includes(ch)) {\n\t\t\t\t\tword += ch;\n\t\t\t\t\tstream.next();\n\t\t\t\t}\n\n\t\t\t\tif(CodeMirrorSpellChecker.typo && !CodeMirrorSpellChecker.typo.check(word))\n\t\t\t\t\treturn \"spell-error\"; // CSS class: cm-spell-error\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tvar mode = options.codeMirrorInstance.getMode(\n\t\t\tconfig, config.backdrop || \"text/plain\"\n\t\t);\n\n\t\treturn options.codeMirrorInstance.overlayMode(mode, overlay, true);\n\t});\n}\n\n\n// Initialize data globally to reduce memory consumption\nCodeMirrorSpellChecker.num_loaded = 0;\nCodeMirrorSpellChecker.aff_loading = false;\nCodeMirrorSpellChecker.dic_loading = false;\nCodeMirrorSpellChecker.aff_data = \"\";\nCodeMirrorSpellChecker.dic_data = \"\";\nCodeMirrorSpellChecker.typo;\n\n\n// Export\nmodule.exports = CodeMirrorSpellChecker;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/,\n emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n unorderedListRE = /[*+-]\\s/;\n\n CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n\n // If we're not in Markdown mode, fall back to normal newlineAndIndent\n var eolState = cm.getStateAfter(pos.line);\n var inner = CodeMirror.innerMode(cm.getMode(), eolState);\n if (inner.mode.name !== \"markdown\" && inner.mode.helperType !== \"markdown\") {\n cm.execCommand(\"newlineAndIndent\");\n return;\n } else {\n eolState = inner.state;\n }\n\n var inList = eolState.list !== false;\n var inQuote = eolState.quote !== 0;\n\n var line = cm.getLine(pos.line), match = listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n if (!ranges[i].empty() || (!inList && !inQuote) || !match || cursorBeforeBullet) {\n cm.execCommand(\"newlineAndIndent\");\n return;\n }\n if (emptyListRE.test(line)) {\n var endOfQuote = inQuote && />\\s*$/.test(line)\n var endOfList = !/>\\s*$/.test(line)\n if (endOfQuote || endOfList) cm.replaceRange(\"\", {\n line: pos.line, ch: 0\n }, {\n line: pos.line, ch: pos.ch + 1\n });\n replacements[i] = \"\\n\";\n } else {\n var indent = match[1], after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0);\n var bullet = numbered ? (parseInt(match[3], 10) + 1) + match[4] : match[2].replace(\"x\", \" \");\n replacements[i] = \"\\n\" + indent + bullet + after;\n\n if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n\n cm.replaceSelections(replacements);\n };\n\n // Auto-updating Markdown list numbers when a new item is added to the\n // middle of a list\n function incrementRemainingMarkdownListNumbers(cm, pos) {\n var startLine = pos.line, lookAhead = 0, skipCount = 0;\n var startItem = listRE.exec(cm.getLine(startLine)), startIndent = startItem[1];\n\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber), nextItem = listRE.exec(nextLine);\n\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = (parseInt(startItem[3], 10) + lookAhead - skipCount);\n var nextNumber = (parseInt(nextItem[3], 10)), itemNumber = nextNumber;\n\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n if (newNumber > nextNumber) itemNumber = newNumber + 1;\n cm.replaceRange(\n nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n {\n line: nextLineNumber, ch: 0\n }, {\n line: nextLineNumber, ch: nextLine.length\n });\n } else {\n if (startIndent.length > nextIndent.length) return;\n // This doesn't run if the next line immediately indents, as it is\n // not clear of the users intention (new indented item or same level)\n if ((startIndent.length < nextIndent.length) && (lookAhead === 1)) return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt(doc) {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = doc.activeElement;\n } catch(e) {\n activeElement = doc.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function doc(cm) { return cm.display.wrapper.ownerDocument }\n\n function win(cm) { return doc(cm).defaultView }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX(doc) {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft)) }\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft\n }\n function pageScrollY(doc) {\n if (chrome && android) { return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop)) }\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt(doc(cm));\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt(doc(cm));\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = win(cm).getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(snapshot.activeElt.ownerDocument)) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) { d.wrapper.style.clipPath = \"inset(0px)\"; }\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt(doc(cm));\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n win(cm).focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(doc(cm)); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc$1 = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc$1.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc$1.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc$1.sel.primary();\n ourIndex = doc$1.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc$1, new Selection([ourRange], 0), sel_mouse);\n startSel = doc$1.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc$1, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc$1, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc$1.sel;\n } else {\n replaceOneSelection(doc$1, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc$1, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc$1, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc$1, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc$1, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc$1, anchor), head));\n setSelection(doc$1, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt(doc(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc$1);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc$1.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){win(this).focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt(doc(this)) },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(div.ownerDocument);\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(this.div.ownerDocument) == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(this.div.ownerDocument) != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n this.resetting = false;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing && typing) { return }\n var cm = this.cm;\n this.resetting = true;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n this.resetting = false;\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(this.textarea.ownerDocument) != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || this.resetting || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = te.ownerDocument.defaultView.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { te.ownerDocument.defaultView.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt(textarea.ownerDocument);\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.15\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../markdown/markdown\"), require(\"../../addon/mode/overlay\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../markdown/markdown\", \"../../addon/mode/overlay\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\\.beep|\\.lwz|\\.xpc|\\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\\.beeps?|xmpp|xri|ymsgr|z39\\.50[rs]?):(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i\n\nCodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n var codeDepth = 0;\n function blankLine(state) {\n state.code = false;\n return null;\n }\n var gfmOverlay = {\n startState: function() {\n return {\n code: false,\n codeBlock: false,\n ateSpace: false\n };\n },\n copyState: function(s) {\n return {\n code: s.code,\n codeBlock: s.codeBlock,\n ateSpace: s.ateSpace\n };\n },\n token: function(stream, state) {\n state.combineTokens = null;\n\n // Hack to prevent formatting override inside code blocks (block and inline)\n if (state.codeBlock) {\n if (stream.match(/^```+/)) {\n state.codeBlock = false;\n return null;\n }\n stream.skipToEnd();\n return null;\n }\n if (stream.sol()) {\n state.code = false;\n }\n if (stream.sol() && stream.match(/^```+/)) {\n stream.skipToEnd();\n state.codeBlock = true;\n return null;\n }\n // If this block is changed, it may need to be updated in Markdown mode\n if (stream.peek() === '`') {\n stream.next();\n var before = stream.pos;\n stream.eatWhile('`');\n var difference = 1 + stream.pos - before;\n if (!state.code) {\n codeDepth = difference;\n state.code = true;\n } else {\n if (difference === codeDepth) { // Must be exact\n state.code = false;\n }\n }\n return null;\n } else if (state.code) {\n stream.next();\n return null;\n }\n // Check if space. If so, links can be formatted later on\n if (stream.eatSpace()) {\n state.ateSpace = true;\n return null;\n }\n if (stream.sol() || state.ateSpace) {\n state.ateSpace = false;\n if (modeConfig.gitHubSpice !== false) {\n if(stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?=.{0,6}\\d)(?:[a-f0-9]{7,40}\\b)/)) {\n // User/Project@SHA\n // User@SHA\n // SHA\n state.combineTokens = true;\n return \"link\";\n } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n // User/Project#Num\n // User#Num\n // #Num\n state.combineTokens = true;\n return \"link\";\n }\n }\n }\n if (stream.match(urlRE) &&\n stream.string.slice(stream.start - 2, stream.start) != \"](\" &&\n (stream.start == 0 || /\\W/.test(stream.string.charAt(stream.start - 1)))) {\n // URLs\n // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls\n // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine\n // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL\n state.combineTokens = true;\n return \"link\";\n }\n stream.next();\n return null;\n },\n blankLine: blankLine\n };\n\n var markdownConfig = {\n taskLists: true,\n strikethrough: true,\n emoji: true\n };\n for (var attr in modeConfig) {\n markdownConfig[attr] = modeConfig[attr];\n }\n markdownConfig.name = \"markdown\";\n return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);\n\n}, \"markdown\");\n\n CodeMirror.defineMIME(\"text/x-gfm\", \"gfm\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n var htmlModeMissing = htmlMode.name == \"null\"\n\n function getMode(name) {\n if (CodeMirror.findModeByName) {\n var found = CodeMirror.findModeByName(name);\n if (found) name = found.mime || found.mimes[0];\n }\n var mode = CodeMirror.getMode(cmCfg, name);\n return mode.name == \"null\" ? null : mode;\n }\n\n // Should characters that affect highlighting be highlighted separate?\n // Does not include characters that will be output (such as `1.` and `-` for lists)\n if (modeCfg.highlightFormatting === undefined)\n modeCfg.highlightFormatting = false;\n\n // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n // Excess `>` will emit `error` token.\n if (modeCfg.maxBlockquoteDepth === undefined)\n modeCfg.maxBlockquoteDepth = 0;\n\n // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n // Turn on strikethrough syntax\n if (modeCfg.strikethrough === undefined)\n modeCfg.strikethrough = false;\n\n if (modeCfg.emoji === undefined)\n modeCfg.emoji = false;\n\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\n modeCfg.fencedCodeBlockHighlighting = true;\n\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\n\n if (modeCfg.xml === undefined)\n modeCfg.xml = true;\n\n // Allow token types to be overridden by user-provided token types.\n if (modeCfg.tokenTypeOverrides === undefined)\n modeCfg.tokenTypeOverrides = {};\n\n var tokenTypes = {\n header: \"header\",\n code: \"comment\",\n quote: \"quote\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n hr: \"hr\",\n image: \"image\",\n imageAltText: \"image-alt-text\",\n imageMarker: \"image-marker\",\n formatting: \"formatting\",\n linkInline: \"link\",\n linkEmail: \"link\",\n linkText: \"link\",\n linkHref: \"string\",\n em: \"em\",\n strong: \"strong\",\n strikethrough: \"strikethrough\",\n emoji: \"builtin\"\n };\n\n for (var tokenType in tokenTypes) {\n if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n }\n }\n\n var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n , listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n , taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n , setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/\n , textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/\n , fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w\\/+#-]*)[^\\n`]*$/\n , linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n , punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/\n , expandedTab = \" \" // CommonMark specifies tab as 4 spaces\n\n function switchInline(stream, state, f) {\n state.f = state.inline = f;\n return f(stream, state);\n }\n\n function switchBlock(stream, state, f) {\n state.f = state.block = f;\n return f(stream, state);\n }\n\n function lineIsEmpty(line) {\n return !line || !/\\S/.test(line.string)\n }\n\n // Blocks\n\n function blankLine(state) {\n // Reset linkTitle state\n state.linkTitle = false;\n state.linkHref = false;\n state.linkText = false;\n // Reset EM state\n state.em = false;\n // Reset STRONG state\n state.strong = false;\n // Reset strikethrough state\n state.strikethrough = false;\n // Reset state.quote\n state.quote = 0;\n // Reset state.indentedCode\n state.indentedCode = false;\n if (state.f == htmlBlock) {\n var exit = htmlModeMissing\n if (!exit) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n exit = inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)\n }\n if (exit) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n // Mark this line as blank\n state.prevLine = state.thisLine\n state.thisLine = {stream: null}\n return null;\n }\n\n function blockNormal(stream, state) {\n var firstTokenOnLine = stream.column() === state.indentation;\n var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n var prevLineIsIndentedCode = state.indentedCode;\n var prevLineIsHr = state.prevLine.hr;\n var prevLineIsList = state.list !== false;\n var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n\n state.indentedCode = false;\n\n var lineIndentation = state.indentation;\n // compute once per line (on first token)\n if (state.indentationDiff === null) {\n state.indentationDiff = state.indentation;\n if (prevLineIsList) {\n state.list = null;\n // While this list item's marker's indentation is less than the deepest\n // list item's content's indentation,pop the deepest list item\n // indentation off the stack, and update block indentation state\n while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n state.listStack.pop();\n if (state.listStack.length) {\n state.indentation = state.listStack[state.listStack.length - 1];\n // less than the first list's indent -> the line is no longer a list\n } else {\n state.list = false;\n }\n }\n if (state.list !== false) {\n state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1]\n }\n }\n }\n\n // not comprehensive (currently only for setext detection purposes)\n var allowsInlineContinuation = (\n !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header &&\n (!prevLineIsList || !prevLineIsIndentedCode) &&\n !state.prevLine.fencedCodeEnd\n );\n\n var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) &&\n state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n\n var match = null;\n if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd ||\n state.prevLine.header || prevLineLineIsEmpty)) {\n stream.skipToEnd();\n state.indentedCode = true;\n return tokenTypes.code;\n } else if (stream.eatSpace()) {\n return null;\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n state.quote = 0;\n state.header = match[1].length;\n state.thisLine.header = true;\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n state.f = state.inline;\n return getType(state);\n } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n stream.eatSpace();\n return getType(state);\n } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n var listType = match[1] ? \"ol\" : \"ul\";\n\n state.indentation = lineIndentation + stream.current().length;\n state.list = true;\n state.quote = 0;\n\n // Add this list item's content's indentation to the stack\n state.listStack.push(state.indentation);\n // Reset inline styles which shouldn't propagate across list items\n state.em = false;\n state.strong = false;\n state.code = false;\n state.strikethrough = false;\n\n if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n state.taskList = true;\n }\n state.f = state.inline;\n if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n return getType(state);\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n state.quote = 0;\n state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n // try switching mode\n state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode );\n if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n state.f = state.block = local;\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n state.code = -1\n return getType(state);\n // SETEXT has lowest block-scope precedence after HR, so check it after\n // the others (code, blockquote, list...)\n } else if (\n // if setext set, indicates line after ---/===\n state.setext || (\n // line before ---/===\n (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false &&\n !state.code && !isHr && !linkDefRE.test(stream.string) &&\n (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n )\n ) {\n if ( !state.setext ) {\n state.header = match[0].charAt(0) == '=' ? 1 : 2;\n state.setext = state.header;\n } else {\n state.header = state.setext;\n // has no effect on type so we can reset it now\n state.setext = 0;\n stream.skipToEnd();\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n }\n state.thisLine.header = true;\n state.f = state.inline;\n return getType(state);\n } else if (isHr) {\n stream.skipToEnd();\n state.hr = true;\n state.thisLine.hr = true;\n return tokenTypes.hr;\n } else if (stream.peek() === '[') {\n return switchInline(stream, state, footnoteLink);\n }\n\n return switchInline(stream, state, state.inline);\n }\n\n function htmlBlock(stream, state) {\n var style = htmlMode.token(stream, state.htmlState);\n if (!htmlModeMissing) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)) ||\n (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n return style;\n }\n\n function local(stream, state) {\n var currListInd = state.listStack[state.listStack.length - 1] || 0;\n var hasExitedList = state.indentation < currListInd;\n var maxFencedEndInd = currListInd + 3;\n if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n var returnType;\n if (!hasExitedList) returnType = getType(state)\n state.localMode = state.localState = null;\n state.block = blockNormal;\n state.f = inlineNormal;\n state.fencedEndRE = null;\n state.code = 0\n state.thisLine.fencedCodeEnd = true;\n if (hasExitedList) return switchBlock(stream, state, state.block);\n return returnType;\n } else if (state.localMode) {\n return state.localMode.token(stream, state.localState);\n } else {\n stream.skipToEnd();\n return tokenTypes.code;\n }\n }\n\n // Inline\n function getType(state) {\n var styles = [];\n\n if (state.formatting) {\n styles.push(tokenTypes.formatting);\n\n if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n for (var i = 0; i < state.formatting.length; i++) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n if (state.formatting[i] === \"header\") {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n }\n\n // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n // Add `error` instead if the maximum blockquote nesting depth is passed\n if (state.formatting[i] === \"quote\") {\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n } else {\n styles.push(\"error\");\n }\n }\n }\n }\n\n if (state.taskOpen) {\n styles.push(\"meta\");\n return styles.length ? styles.join(' ') : null;\n }\n if (state.taskClosed) {\n styles.push(\"property\");\n return styles.length ? styles.join(' ') : null;\n }\n\n if (state.linkHref) {\n styles.push(tokenTypes.linkHref, \"url\");\n } else { // Only apply inline styles to non-url text\n if (state.strong) { styles.push(tokenTypes.strong); }\n if (state.em) { styles.push(tokenTypes.em); }\n if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n if (state.emoji) { styles.push(tokenTypes.emoji); }\n if (state.linkText) { styles.push(tokenTypes.linkText); }\n if (state.code) { styles.push(tokenTypes.code); }\n if (state.image) { styles.push(tokenTypes.image); }\n if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n }\n\n if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n if (state.quote) {\n styles.push(tokenTypes.quote);\n\n // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.quote + \"-\" + state.quote);\n } else {\n styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n }\n }\n\n if (state.list !== false) {\n var listMod = (state.listStack.length - 1) % 3;\n if (!listMod) {\n styles.push(tokenTypes.list1);\n } else if (listMod === 1) {\n styles.push(tokenTypes.list2);\n } else {\n styles.push(tokenTypes.list3);\n }\n }\n\n if (state.trailingSpaceNewLine) {\n styles.push(\"trailing-space-new-line\");\n } else if (state.trailingSpace) {\n styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n }\n\n return styles.length ? styles.join(' ') : null;\n }\n\n function handleText(stream, state) {\n if (stream.match(textRE, true)) {\n return getType(state);\n }\n return undefined;\n }\n\n function inlineNormal(stream, state) {\n var style = state.text(stream, state);\n if (typeof style !== 'undefined')\n return style;\n\n if (state.list) { // List marker (*, +, -, 1., etc)\n state.list = null;\n return getType(state);\n }\n\n if (state.taskList) {\n var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n if (taskOpen) state.taskOpen = true;\n else state.taskClosed = true;\n if (modeCfg.highlightFormatting) state.formatting = \"task\";\n state.taskList = false;\n return getType(state);\n }\n\n state.taskOpen = false;\n state.taskClosed = false;\n\n if (state.header && stream.match(/^#+$/, true)) {\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n return getType(state);\n }\n\n var ch = stream.next();\n\n // Matches link titles present on next line\n if (state.linkTitle) {\n state.linkTitle = false;\n var matchCh = ch;\n if (ch === '(') {\n matchCh = ')';\n }\n matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n if (stream.match(new RegExp(regex), true)) {\n return tokenTypes.linkHref;\n }\n }\n\n // If this block is changed, it may need to be updated in GFM mode\n if (ch === '`') {\n var previousFormatting = state.formatting;\n if (modeCfg.highlightFormatting) state.formatting = \"code\";\n stream.eatWhile('`');\n var count = stream.current().length\n if (state.code == 0 && (!state.quote || count == 1)) {\n state.code = count\n return getType(state)\n } else if (count == state.code) { // Must be exact\n var t = getType(state)\n state.code = 0\n return t\n } else {\n state.formatting = previousFormatting\n return getType(state)\n }\n } else if (state.code) {\n return getType(state);\n }\n\n if (ch === '\\\\') {\n stream.next();\n if (modeCfg.highlightFormatting) {\n var type = getType(state);\n var formattingEscape = tokenTypes.formatting + \"-escape\";\n return type ? type + \" \" + formattingEscape : formattingEscape;\n }\n }\n\n if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n state.imageMarker = true;\n state.image = true;\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n state.imageMarker = false;\n state.imageAltText = true\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === ']' && state.imageAltText) {\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n var type = getType(state);\n state.imageAltText = false;\n state.image = false;\n state.inline = state.f = linkHref;\n return type;\n }\n\n if (ch === '[' && !state.image) {\n if (state.linkText && stream.match(/^.*?\\]/)) return getType(state)\n state.linkText = true;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n return getType(state);\n }\n\n if (ch === ']' && state.linkText) {\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n state.linkText = false;\n state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal\n return type;\n }\n\n if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkEmail;\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n var end = stream.string.indexOf(\">\", stream.pos);\n if (end != -1) {\n var atts = stream.string.substring(stream.start, end);\n if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n }\n stream.backUp(1);\n state.htmlState = CodeMirror.startState(htmlMode);\n return switchBlock(stream, state, htmlBlock);\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n state.md_inside = false;\n return \"tag\";\n } else if (ch === \"*\" || ch === \"_\") {\n var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n while (len < 3 && stream.eat(ch)) len++\n var after = stream.peek() || \" \"\n // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n var setEm = null, setStrong = null\n if (len % 2) { // Em\n if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setEm = true\n else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setEm = false\n }\n if (len > 1) { // Strong\n if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setStrong = true\n else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setStrong = false\n }\n if (setStrong != null || setEm != null) {\n if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n if (setEm === true) state.em = ch\n if (setStrong === true) state.strong = ch\n var t = getType(state)\n if (setEm === false) state.em = false\n if (setStrong === false) state.strong = false\n return t\n }\n } else if (ch === ' ') {\n if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(1);\n }\n }\n }\n\n if (modeCfg.strikethrough) {\n if (ch === '~' && stream.eatWhile(ch)) {\n if (state.strikethrough) {// Remove strikethrough\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n var t = getType(state);\n state.strikethrough = false;\n return t;\n } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n state.strikethrough = true;\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n return getType(state);\n }\n } else if (ch === ' ') {\n if (stream.match('~~', true)) { // Probably surrounded by space\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(2);\n }\n }\n }\n }\n\n if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n state.emoji = true;\n if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n var retType = getType(state);\n state.emoji = false;\n return retType;\n }\n\n if (ch === ' ') {\n if (stream.match(/^ +$/, false)) {\n state.trailingSpace++;\n } else if (state.trailingSpace) {\n state.trailingSpaceNewLine = true;\n }\n }\n\n return getType(state);\n }\n\n function linkInline(stream, state) {\n var ch = stream.next();\n\n if (ch === \">\") {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n stream.match(/^[^>]+/, true);\n\n return tokenTypes.linkInline;\n }\n\n function linkHref(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n var ch = stream.next();\n if (ch === '(' || ch === '[') {\n state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n state.linkHref = true;\n return getType(state);\n }\n return 'error';\n }\n\n var linkRE = {\n \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n }\n\n function getLinkHrefInside(endChar) {\n return function(stream, state) {\n var ch = stream.next();\n\n if (ch === endChar) {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n var returnState = getType(state);\n state.linkHref = false;\n return returnState;\n }\n\n stream.match(linkRE[endChar])\n state.linkHref = true;\n return getType(state);\n };\n }\n\n function footnoteLink(stream, state) {\n if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n state.f = footnoteLinkInside;\n stream.next(); // Consume [\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n state.linkText = true;\n return getType(state);\n }\n return switchInline(stream, state, inlineNormal);\n }\n\n function footnoteLinkInside(stream, state) {\n if (stream.match(']:', true)) {\n state.f = state.inline = footnoteUrl;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var returnType = getType(state);\n state.linkText = false;\n return returnType;\n }\n\n stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n return tokenTypes.linkText;\n }\n\n function footnoteUrl(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n // Match URL\n stream.match(/^[^\\s]+/, true);\n // Check for link title\n if (stream.peek() === undefined) { // End of line, set flag to check next line\n state.linkTitle = true;\n } else { // More content on line, check if link title\n stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\.)+\"|'(?:[^'\\\\]|\\\\.)+'|\\((?:[^)\\\\]|\\\\.)+\\)))?/, true);\n }\n state.f = state.inline = inlineNormal;\n return tokenTypes.linkHref + \" url\";\n }\n\n var mode = {\n startState: function() {\n return {\n f: blockNormal,\n\n prevLine: {stream: null},\n thisLine: {stream: null},\n\n block: blockNormal,\n htmlState: null,\n indentation: 0,\n\n inline: inlineNormal,\n text: handleText,\n\n formatting: false,\n linkText: false,\n linkHref: false,\n linkTitle: false,\n code: 0,\n em: false,\n strong: false,\n header: 0,\n setext: 0,\n hr: false,\n taskList: false,\n list: false,\n listStack: [],\n quote: 0,\n trailingSpace: 0,\n trailingSpaceNewLine: false,\n strikethrough: false,\n emoji: false,\n fencedEndRE: null\n };\n },\n\n copyState: function(s) {\n return {\n f: s.f,\n\n prevLine: s.prevLine,\n thisLine: s.thisLine,\n\n block: s.block,\n htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n indentation: s.indentation,\n\n localMode: s.localMode,\n localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n inline: s.inline,\n text: s.text,\n formatting: false,\n linkText: s.linkText,\n linkTitle: s.linkTitle,\n linkHref: s.linkHref,\n code: s.code,\n em: s.em,\n strong: s.strong,\n strikethrough: s.strikethrough,\n emoji: s.emoji,\n header: s.header,\n setext: s.setext,\n hr: s.hr,\n taskList: s.taskList,\n list: s.list,\n listStack: s.listStack.slice(0),\n quote: s.quote,\n indentedCode: s.indentedCode,\n trailingSpace: s.trailingSpace,\n trailingSpaceNewLine: s.trailingSpaceNewLine,\n md_inside: s.md_inside,\n fencedEndRE: s.fencedEndRE\n };\n },\n\n token: function(stream, state) {\n\n // Reset state.formatting\n state.formatting = false;\n\n if (stream != state.thisLine.stream) {\n state.header = 0;\n state.hr = false;\n\n if (stream.match(/^\\s*$/, true)) {\n blankLine(state);\n return null;\n }\n\n state.prevLine = state.thisLine\n state.thisLine = {stream: stream}\n\n // Reset state.taskList\n state.taskList = false;\n\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n\n if (!state.localState) {\n state.f = state.block;\n if (state.f != htmlBlock) {\n var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n state.indentation = indentation;\n state.indentationDiff = null;\n if (indentation > 0) return null;\n }\n }\n }\n return state.f(stream, state);\n },\n\n innerMode: function(state) {\n if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n if (state.localState) return {state: state.localState, mode: state.localMode};\n return {state: state, mode: mode};\n },\n\n indent: function(state, textAfter, line) {\n if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line)\n if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line)\n return CodeMirror.Pass\n },\n\n blankLine: blankLine,\n\n getType: getType,\n\n blockCommentStart: \"\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n fold: \"markdown\"\n };\n return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.modeInfo = [\n {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-encrypted\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"asc\", \"pgp\", \"sig\"]},\n {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\", \"ino\"]},\n {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\", \"cbl\"]},\n {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\", \"cs\"]},\n {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists\\.txt$/},\n {name: \"CoffeeScript\", mimes: [\"application/vnd.coffeescript\", \"text/coffeescript\", \"text/x-coffeescript\"], mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n {name: \"Embedded JavaScript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n {name: \"Esper\", mime: \"text/x-esper\", mode: \"sql\"},\n {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\", \"f95\"]},\n {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history)\\.md$/i},\n {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\", \"handlebars\", \"hbs\"], alias: [\"xhtml\"]},\n {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n {name: \"Jinja2\", mime: \"text/jinja2\", mode: \"jinja2\", ext: [\"j2\", \"jinja\", \"jinja2\"]},\n {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"], alias: [\"jl\"]},\n {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\", \"wl\", \"wls\"]},\n {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n {name: \"NTriples\", mimes: [\"application/n-triples\", \"application/n-quads\", \"text/n-triples\"],\n mode: \"ntriples\", ext: [\"nt\", \"nq\"]},\n {name: \"Objective-C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\"], alias: [\"objective-c\", \"objc\"]},\n {name: \"Objective-C++\", mime: \"text/x-objectivec++\", mode: \"clike\", ext: [\"mm\"], alias: [\"objective-c++\", \"objc++\"]},\n {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n {name: \"PHP\", mimes: [\"text/x-php\", \"application/x-httpd-php\", \"application/x-httpd-php-open\"], mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"php7\", \"phtml\"]},\n {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n {name: \"PostgreSQL\", mime: \"text/x-pgsql\", mode: \"sql\"},\n {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n {name: \"Shell\", mimes: [\"text/x-sh\", \"application/x-sh\"], mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n {name: \"SML\", mime: \"text/x-sml\", mode: \"mllike\", ext: [\"sml\", \"sig\", \"fun\", \"smackspec\"]},\n {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\", \"tex\"], alias: [\"tex\"]},\n {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\", \"sv\", \"svh\"]},\n {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n {name: \"TiddlyWiki\", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]},\n {name: \"WebAssembly\", mime: \"text/webassembly\", mode: \"wast\", ext: [\"wat\", \"wast\"]},\n ];\n // Ensure all modes have a mime property for backwards compatibility\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mimes) info.mime = info.mimes[0];\n }\n\n CodeMirror.findModeByMIME = function(mime) {\n mime = mime.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mime == mime) return info;\n if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n if (info.mimes[j] == mime) return info;\n }\n if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n };\n\n CodeMirror.findModeByExtension = function(ext) {\n ext = ext.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.ext) for (var j = 0; j < info.ext.length; j++)\n if (info.ext[j] == ext) return info;\n }\n };\n\n CodeMirror.findModeByFileName = function(filename) {\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.file && info.file.test(filename)) return info;\n }\n var dot = filename.lastIndexOf(\".\");\n var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n if (ext) return CodeMirror.findModeByExtension(ext);\n };\n\n CodeMirror.findModeByName = function(name) {\n name = name.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.name.toLowerCase() == name) return info;\n if (info.alias) for (var j = 0; j < info.alias.length; j++)\n if (info.alias[j].toLowerCase() == name) return info;\n }\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","/*!\n * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2023 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.8\n */\n!function(e, t) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = t(); else if (\"function\" == typeof define && define.amd) define([], t); else {\n var i = t();\n for (var n in i) (\"object\" == typeof exports ? exports : e)[n] = i[n];\n }\n}(\"undefined\" != typeof self ? self : this, (function() {\n return function() {\n \"use strict\";\n var e = {\n 8741: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var i = !(\"undefined\" == typeof window || !window.document || !window.document.createElement);\n t.default = i;\n },\n 3976: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = i(2839), a = {\n _maxTestPos: 500,\n placeholder: \"_\",\n optionalmarker: [ \"[\", \"]\" ],\n quantifiermarker: [ \"{\", \"}\" ],\n groupmarker: [ \"(\", \")\" ],\n alternatormarker: \"|\",\n escapeChar: \"\\\\\",\n mask: null,\n regex: null,\n oncomplete: function() {},\n onincomplete: function() {},\n oncleared: function() {},\n repeat: 0,\n greedy: !1,\n autoUnmask: !1,\n removeMaskOnSubmit: !1,\n clearMaskOnLostFocus: !0,\n insertMode: !0,\n insertModeVisual: !0,\n clearIncomplete: !1,\n alias: null,\n onKeyDown: function() {},\n onBeforeMask: null,\n onBeforePaste: function(e, t) {\n return \"function\" == typeof t.onBeforeMask ? t.onBeforeMask.call(this, e, t) : e;\n },\n onBeforeWrite: null,\n onUnMask: null,\n showMaskOnFocus: !0,\n showMaskOnHover: !0,\n onKeyValidation: function() {},\n skipOptionalPartCharacter: \" \",\n numericInput: !1,\n rightAlign: !1,\n undoOnEscape: !0,\n radixPoint: \"\",\n _radixDance: !1,\n groupSeparator: \"\",\n keepStatic: null,\n positionCaretOnTab: !0,\n tabThrough: !1,\n supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n ignorables: [ n.keys.Backspace, n.keys.Tab, n.keys.Pause, n.keys.Escape, n.keys.PageUp, n.keys.PageDown, n.keys.End, n.keys.Home, n.keys.ArrowLeft, n.keys.ArrowUp, n.keys.ArrowRight, n.keys.ArrowDown, n.keys.Insert, n.keys.Delete, n.keys.ContextMenu, n.keys.F1, n.keys.F2, n.keys.F3, n.keys.F4, n.keys.F5, n.keys.F6, n.keys.F7, n.keys.F8, n.keys.F9, n.keys.F10, n.keys.F11, n.keys.F12, n.keys.Process, n.keys.Unidentified, n.keys.Shift, n.keys.Control, n.keys.Alt, n.keys.Tab, n.keys.AltGraph, n.keys.CapsLock ],\n isComplete: null,\n preValidation: null,\n postValidation: null,\n staticDefinitionSymbol: void 0,\n jitMasking: !1,\n nullable: !0,\n inputEventOnly: !1,\n noValuePatching: !1,\n positionCaretOnClick: \"lvp\",\n casing: null,\n inputmode: \"text\",\n importDataAttributes: !0,\n shiftPositions: !0,\n usePrototypeDefinitions: !0,\n validationEventTimeOut: 3e3,\n substitutes: {}\n };\n t.default = a;\n },\n 7392: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n t.default = {\n 9: {\n validator: \"[0-9\\uff10-\\uff19]\",\n definitionSymbol: \"*\"\n },\n a: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n definitionSymbol: \"*\"\n },\n \"*\": {\n validator: \"[0-9\\uff10-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n }\n };\n },\n 253: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e, t, i) {\n if (void 0 === i) return e.__data ? e.__data[t] : null;\n e.__data = e.__data || {}, e.__data[t] = i;\n };\n },\n 3776: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.Event = void 0, t.off = function(e, t) {\n var i, n;\n f(this[0]) && e && (i = this[0].eventRegistry, n = this[0], e.split(\" \").forEach((function(e) {\n var a = l(e.split(\".\"), 2);\n (function(e, n) {\n var a, r, o = [];\n if (e.length > 0) if (void 0 === t) for (a = 0, r = i[e][n].length; a < r; a++) o.push({\n ev: e,\n namespace: n && n.length > 0 ? n : \"global\",\n handler: i[e][n][a]\n }); else o.push({\n ev: e,\n namespace: n && n.length > 0 ? n : \"global\",\n handler: t\n }); else if (n.length > 0) for (var s in i) for (var l in i[s]) if (l === n) if (void 0 === t) for (a = 0, \n r = i[s][l].length; a < r; a++) o.push({\n ev: s,\n namespace: l,\n handler: i[s][l][a]\n }); else o.push({\n ev: s,\n namespace: l,\n handler: t\n });\n return o;\n })(a[0], a[1]).forEach((function(e) {\n var t = e.ev, a = e.handler;\n !function(e, t, a) {\n if (e in i == 1) if (n.removeEventListener ? n.removeEventListener(e, a, !1) : n.detachEvent && n.detachEvent(\"on\".concat(e), a), \n \"global\" === t) for (var r in i[e]) i[e][r].splice(i[e][r].indexOf(a), 1); else i[e][t].splice(i[e][t].indexOf(a), 1);\n }(t, e.namespace, a);\n }));\n })));\n return this;\n }, t.on = function(e, t) {\n if (f(this[0])) {\n var i = this[0].eventRegistry, n = this[0];\n e.split(\" \").forEach((function(e) {\n var a = l(e.split(\".\"), 2), r = a[0], o = a[1];\n !function(e, a) {\n n.addEventListener ? n.addEventListener(e, t, !1) : n.attachEvent && n.attachEvent(\"on\".concat(e), t), \n i[e] = i[e] || {}, i[e][a] = i[e][a] || [], i[e][a].push(t);\n }(r, void 0 === o ? \"global\" : o);\n }));\n }\n return this;\n }, t.trigger = function(e) {\n var t = arguments;\n if (f(this[0])) for (var i = this[0].eventRegistry, n = this[0], r = \"string\" == typeof e ? e.split(\" \") : [ e.type ], s = 0; s < r.length; s++) {\n var l = r[s].split(\".\"), c = l[0], u = l[1] || \"global\";\n if (void 0 !== document && \"global\" === u) {\n var d, p = {\n bubbles: !0,\n cancelable: !0,\n composed: !0,\n detail: arguments[1]\n };\n if (document.createEvent) {\n try {\n if (\"input\" === c) p.inputType = \"insertText\", d = new InputEvent(c, p); else d = new CustomEvent(c, p);\n } catch (e) {\n (d = document.createEvent(\"CustomEvent\")).initCustomEvent(c, p.bubbles, p.cancelable, p.detail);\n }\n e.type && (0, a.default)(d, e), n.dispatchEvent(d);\n } else (d = document.createEventObject()).eventType = c, d.detail = arguments[1], \n e.type && (0, a.default)(d, e), n.fireEvent(\"on\" + d.eventType, d);\n } else if (void 0 !== i[c]) {\n arguments[0] = arguments[0].type ? arguments[0] : o.default.Event(arguments[0]), \n arguments[0].detail = arguments.slice(1);\n var h = i[c];\n (\"global\" === u ? Object.values(h).flat() : h[u]).forEach((function(e) {\n return e.apply(n, t);\n }));\n }\n }\n return this;\n };\n var n, a = u(i(600)), r = u(i(9380)), o = u(i(4963)), s = u(i(8741));\n function l(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return c(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);\n }(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function c(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n function u(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n function f(e) {\n return e instanceof Element;\n }\n t.Event = n, \"function\" == typeof r.default.CustomEvent ? t.Event = n = r.default.CustomEvent : s.default && (t.Event = n = function(e, t) {\n t = t || {\n bubbles: !1,\n cancelable: !1,\n composed: !0,\n detail: void 0\n };\n var i = document.createEvent(\"CustomEvent\");\n return i.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), i;\n }, n.prototype = r.default.Event.prototype);\n },\n 600: function(e, t) {\n function i(e) {\n return i = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, i(e);\n }\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function e() {\n var t, n, a, r, o, s, l = arguments[0] || {}, c = 1, u = arguments.length, f = !1;\n \"boolean\" == typeof l && (f = l, l = arguments[c] || {}, c++);\n \"object\" !== i(l) && \"function\" != typeof l && (l = {});\n for (;c < u; c++) if (null != (t = arguments[c])) for (n in t) a = l[n], l !== (r = t[n]) && (f && r && (\"[object Object]\" === Object.prototype.toString.call(r) || (o = Array.isArray(r))) ? (o ? (o = !1, \n s = a && Array.isArray(a) ? a : []) : s = a && \"[object Object]\" === Object.prototype.toString.call(a) ? a : {}, \n l[n] = e(f, s, r)) : void 0 !== r && (l[n] = r));\n return l;\n };\n },\n 4963: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = s(i(600)), a = s(i(9380)), r = s(i(253)), o = i(3776);\n function s(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var l = a.default.document;\n function c(e) {\n return e instanceof c ? e : this instanceof c ? void (null != e && e !== a.default && (this[0] = e.nodeName ? e : void 0 !== e[0] && e[0].nodeName ? e[0] : l.querySelector(e), \n void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new c(e);\n }\n c.prototype = {\n on: o.on,\n off: o.off,\n trigger: o.trigger\n }, c.extend = n.default, c.data = r.default, c.Event = o.Event;\n var u = c;\n t.default = u;\n },\n 9845: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.mobile = t.iphone = t.ie = void 0;\n var n, a = (n = i(9380)) && n.__esModule ? n : {\n default: n\n };\n var r = a.default.navigator && a.default.navigator.userAgent || \"\", o = r.indexOf(\"MSIE \") > 0 || r.indexOf(\"Trident/\") > 0, s = navigator.userAgentData && navigator.userAgentData.mobile || a.default.navigator && a.default.navigator.maxTouchPoints || \"ontouchstart\" in a.default, l = /iphone/i.test(r);\n t.iphone = l, t.mobile = s, t.ie = o;\n },\n 7184: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e) {\n return e.replace(i, \"\\\\$1\");\n };\n var i = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n },\n 6030: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.EventHandlers = void 0;\n var n = i(8711), a = i(2839), r = i(9845), o = i(7215), s = i(7760), l = i(4713);\n function c(e, t) {\n var i = \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (!i) {\n if (Array.isArray(e) || (i = function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return u(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return u(e, t);\n }(e)) || t && e && \"number\" == typeof e.length) {\n i && (e = i);\n var n = 0, a = function() {};\n return {\n s: a,\n n: function() {\n return n >= e.length ? {\n done: !0\n } : {\n done: !1,\n value: e[n++]\n };\n },\n e: function(e) {\n throw e;\n },\n f: a\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var r, o = !0, s = !1;\n return {\n s: function() {\n i = i.call(e);\n },\n n: function() {\n var e = i.next();\n return o = e.done, e;\n },\n e: function(e) {\n s = !0, r = e;\n },\n f: function() {\n try {\n o || null == i.return || i.return();\n } finally {\n if (s) throw r;\n }\n }\n };\n }\n function u(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n var f = {\n keyEvent: function(e, t, i, c, u) {\n var d = this.inputmask, p = d.opts, h = d.dependencyLib, v = d.maskset, m = this, g = h(m), y = e.key, k = n.caret.call(d, m), b = p.onKeyDown.call(this, e, n.getBuffer.call(d), k, p);\n if (void 0 !== b) return b;\n if (y === a.keys.Backspace || y === a.keys.Delete || r.iphone && y === a.keys.BACKSPACE_SAFARI || e.ctrlKey && y === a.keys.x && !(\"oncut\" in m)) e.preventDefault(), \n o.handleRemove.call(d, m, y, k), (0, s.writeBuffer)(m, n.getBuffer.call(d, !0), v.p, e, m.inputmask._valueGet() !== n.getBuffer.call(d).join(\"\")); else if (y === a.keys.End || y === a.keys.PageDown) {\n e.preventDefault();\n var x = n.seekNext.call(d, n.getLastValidPosition.call(d));\n n.caret.call(d, m, e.shiftKey ? k.begin : x, x, !0);\n } else y === a.keys.Home && !e.shiftKey || y === a.keys.PageUp ? (e.preventDefault(), \n n.caret.call(d, m, 0, e.shiftKey ? k.begin : 0, !0)) : p.undoOnEscape && y === a.keys.Escape && !0 !== e.altKey ? ((0, \n s.checkVal)(m, !0, !1, d.undoValue.split(\"\")), g.trigger(\"click\")) : y !== a.keys.Insert || e.shiftKey || e.ctrlKey || void 0 !== d.userOptions.insertMode ? !0 === p.tabThrough && y === a.keys.Tab ? !0 === e.shiftKey ? (k.end = n.seekPrevious.call(d, k.end, !0), \n !0 === l.getTest.call(d, k.end - 1).match.static && k.end--, k.begin = n.seekPrevious.call(d, k.end, !0), \n k.begin >= 0 && k.end > 0 && (e.preventDefault(), n.caret.call(d, m, k.begin, k.end))) : (k.begin = n.seekNext.call(d, k.begin, !0), \n k.end = n.seekNext.call(d, k.begin, !0), k.end < v.maskLength && k.end--, k.begin <= v.maskLength && (e.preventDefault(), \n n.caret.call(d, m, k.begin, k.end))) : e.shiftKey || p.insertModeVisual && !1 === p.insertMode && (y === a.keys.ArrowRight ? setTimeout((function() {\n var e = n.caret.call(d, m);\n n.caret.call(d, m, e.begin);\n }), 0) : y === a.keys.ArrowLeft && setTimeout((function() {\n var e = n.translatePosition.call(d, m.inputmask.caretPos.begin);\n n.translatePosition.call(d, m.inputmask.caretPos.end);\n d.isRTL ? n.caret.call(d, m, e + (e === v.maskLength ? 0 : 1)) : n.caret.call(d, m, e - (0 === e ? 0 : 1));\n }), 0)) : o.isSelection.call(d, k) ? p.insertMode = !p.insertMode : (p.insertMode = !p.insertMode, \n n.caret.call(d, m, k.begin, k.begin));\n return d.isComposing = y == a.keys.Process || y == a.keys.Unidentified, d.ignorable = p.ignorables.includes(y), \n f.keypressEvent.call(this, e, t, i, c, u);\n },\n keypressEvent: function(e, t, i, r, l) {\n var c = this.inputmask || this, u = c.opts, f = c.dependencyLib, d = c.maskset, p = c.el, h = f(p), v = e.key;\n if (!0 === t || e.ctrlKey && e.altKey || !(e.ctrlKey || e.metaKey || c.ignorable)) {\n if (v) {\n var m, g = t ? {\n begin: l,\n end: l\n } : n.caret.call(c, p);\n v = u.substitutes[v] || v, d.writeOutBuffer = !0;\n var y = o.isValid.call(c, g, v, r, void 0, void 0, void 0, t);\n if (!1 !== y && (n.resetMaskSet.call(c, !0), m = void 0 !== y.caret ? y.caret : n.seekNext.call(c, y.pos.begin ? y.pos.begin : y.pos), \n d.p = m), m = u.numericInput && void 0 === y.caret ? n.seekPrevious.call(c, m) : m, \n !1 !== i && (setTimeout((function() {\n u.onKeyValidation.call(p, v, y);\n }), 0), d.writeOutBuffer && !1 !== y)) {\n var k = n.getBuffer.call(c);\n (0, s.writeBuffer)(p, k, m, e, !0 !== t);\n }\n if (e.preventDefault(), t) return !1 !== y && (y.forwardPosition = m), y;\n }\n } else v === a.keys.Enter && c.undoValue !== c._valueGet(!0) && (c.undoValue = c._valueGet(!0), \n setTimeout((function() {\n h.trigger(\"change\");\n }), 0));\n },\n pasteEvent: function(e) {\n var t, i = this.inputmask, a = i.opts, r = i._valueGet(!0), o = n.caret.call(i, this);\n i.isRTL && (t = o.end, o.end = n.translatePosition.call(i, o.begin), o.begin = n.translatePosition.call(i, t));\n var l = r.substr(0, o.begin), u = r.substr(o.end, r.length);\n if (l == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(0, o.begin).join(\"\") && (l = \"\"), \n u == (i.isRTL ? n.getBufferTemplate.call(i).slice().reverse() : n.getBufferTemplate.call(i)).slice(o.end).join(\"\") && (u = \"\"), \n window.clipboardData && window.clipboardData.getData) r = l + window.clipboardData.getData(\"Text\") + u; else {\n if (!e.clipboardData || !e.clipboardData.getData) return !0;\n r = l + e.clipboardData.getData(\"text/plain\") + u;\n }\n var f = r;\n if (i.isRTL) {\n f = f.split(\"\");\n var d, p = c(n.getBufferTemplate.call(i));\n try {\n for (p.s(); !(d = p.n()).done; ) {\n var h = d.value;\n f[0] === h && f.shift();\n }\n } catch (e) {\n p.e(e);\n } finally {\n p.f();\n }\n f = f.join(\"\");\n }\n if (\"function\" == typeof a.onBeforePaste) {\n if (!1 === (f = a.onBeforePaste.call(i, f, a))) return !1;\n f || (f = r);\n }\n (0, s.checkVal)(this, !0, !1, f.toString().split(\"\"), e), e.preventDefault();\n },\n inputFallBackEvent: function(e) {\n var t = this.inputmask, i = t.opts, o = t.dependencyLib;\n var c, u = this, d = u.inputmask._valueGet(!0), p = (t.isRTL ? n.getBuffer.call(t).slice().reverse() : n.getBuffer.call(t)).join(\"\"), h = n.caret.call(t, u, void 0, void 0, !0);\n if (p !== d) {\n if (c = function(e, a, r) {\n for (var o, s, c, u = e.substr(0, r.begin).split(\"\"), f = e.substr(r.begin).split(\"\"), d = a.substr(0, r.begin).split(\"\"), p = a.substr(r.begin).split(\"\"), h = u.length >= d.length ? u.length : d.length, v = f.length >= p.length ? f.length : p.length, m = \"\", g = [], y = \"~\"; u.length < h; ) u.push(y);\n for (;d.length < h; ) d.push(y);\n for (;f.length < v; ) f.unshift(y);\n for (;p.length < v; ) p.unshift(y);\n var k = u.concat(f), b = d.concat(p);\n for (s = 0, o = k.length; s < o; s++) switch (c = l.getPlaceholder.call(t, n.translatePosition.call(t, s)), \n m) {\n case \"insertText\":\n b[s - 1] === k[s] && r.begin == k.length - 1 && g.push(k[s]), s = o;\n break;\n\n case \"insertReplacementText\":\n case \"deleteContentBackward\":\n k[s] === y ? r.end++ : s = o;\n break;\n\n default:\n k[s] !== b[s] && (k[s + 1] !== y && k[s + 1] !== c && void 0 !== k[s + 1] || (b[s] !== c || b[s + 1] !== y) && b[s] !== y ? b[s + 1] === y && b[s] === k[s + 1] ? (m = \"insertText\", \n g.push(k[s]), r.begin--, r.end--) : k[s] !== c && k[s] !== y && (k[s + 1] === y || b[s] !== k[s] && b[s + 1] === k[s + 1]) ? (m = \"insertReplacementText\", \n g.push(k[s]), r.begin--) : k[s] === y ? (m = \"deleteContentBackward\", (n.isMask.call(t, n.translatePosition.call(t, s), !0) || b[s] === i.radixPoint) && r.end++) : s = o : (m = \"insertText\", \n g.push(k[s]), r.begin--, r.end--));\n }\n return {\n action: m,\n data: g,\n caret: r\n };\n }(d, p, h), (u.inputmask.shadowRoot || u.ownerDocument).activeElement !== u && u.focus(), \n (0, s.writeBuffer)(u, n.getBuffer.call(t)), n.caret.call(t, u, h.begin, h.end, !0), \n !r.mobile && t.skipNextInsert && \"insertText\" === e.inputType && \"insertText\" === c.action && t.isComposing) return !1;\n switch (\"insertCompositionText\" === e.inputType && \"insertText\" === c.action && t.isComposing ? t.skipNextInsert = !0 : t.skipNextInsert = !1, \n c.action) {\n case \"insertText\":\n case \"insertReplacementText\":\n c.data.forEach((function(e, i) {\n var n = new o.Event(\"keypress\");\n n.key = e, t.ignorable = !1, f.keypressEvent.call(u, n);\n })), setTimeout((function() {\n t.$el.trigger(\"keyup\");\n }), 0);\n break;\n\n case \"deleteContentBackward\":\n var v = new o.Event(\"keydown\");\n v.key = a.keys.Backspace, f.keyEvent.call(u, v);\n break;\n\n default:\n (0, s.applyInputValue)(u, d), n.caret.call(t, u, h.begin, h.end, !0);\n }\n e.preventDefault();\n }\n },\n setValueEvent: function(e) {\n var t = this.inputmask, i = this, a = e && e.detail ? e.detail[0] : arguments[1];\n void 0 === a && (a = i.inputmask._valueGet(!0)), (0, s.applyInputValue)(i, a), (e.detail && void 0 !== e.detail[1] || void 0 !== arguments[2]) && n.caret.call(t, i, e.detail ? e.detail[1] : arguments[2]);\n },\n focusEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = null == t ? void 0 : t._valueGet();\n i.showMaskOnFocus && a !== n.getBuffer.call(t).join(\"\") && (0, s.writeBuffer)(this, n.getBuffer.call(t), n.seekNext.call(t, n.getLastValidPosition.call(t))), \n !0 !== i.positionCaretOnTab || !1 !== t.mouseEnter || o.isComplete.call(t, n.getBuffer.call(t)) && -1 !== n.getLastValidPosition.call(t) || f.clickEvent.apply(this, [ e, !0 ]), \n t.undoValue = null == t ? void 0 : t._valueGet(!0);\n },\n invalidEvent: function(e) {\n this.inputmask.validationEvent = !0;\n },\n mouseleaveEvent: function() {\n var e = this.inputmask, t = e.opts, i = this;\n e.mouseEnter = !1, t.clearMaskOnLostFocus && (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i && (0, \n s.HandleNativePlaceholder)(i, e.originalPlaceholder);\n },\n clickEvent: function(e, t) {\n var i = this.inputmask;\n i.clicked++;\n var a = this;\n if ((a.inputmask.shadowRoot || a.ownerDocument).activeElement === a) {\n var r = n.determineNewCaretPosition.call(i, n.caret.call(i, a), t);\n void 0 !== r && n.caret.call(i, a, r);\n }\n },\n cutEvent: function(e) {\n var t = this.inputmask, i = t.maskset, r = this, l = n.caret.call(t, r), c = t.isRTL ? n.getBuffer.call(t).slice(l.end, l.begin) : n.getBuffer.call(t).slice(l.begin, l.end), u = t.isRTL ? c.reverse().join(\"\") : c.join(\"\");\n window.navigator.clipboard ? window.navigator.clipboard.writeText(u) : window.clipboardData && window.clipboardData.getData && window.clipboardData.setData(\"Text\", u), \n o.handleRemove.call(t, r, a.keys.Delete, l), (0, s.writeBuffer)(r, n.getBuffer.call(t), i.p, e, t.undoValue !== t._valueGet(!0));\n },\n blurEvent: function(e) {\n var t = this.inputmask, i = t.opts, a = t.dependencyLib;\n t.clicked = 0;\n var r = a(this), l = this;\n if (l.inputmask) {\n (0, s.HandleNativePlaceholder)(l, t.originalPlaceholder);\n var c = l.inputmask._valueGet(), u = n.getBuffer.call(t).slice();\n \"\" !== c && (i.clearMaskOnLostFocus && (-1 === n.getLastValidPosition.call(t) && c === n.getBufferTemplate.call(t).join(\"\") ? u = [] : s.clearOptionalTail.call(t, u)), \n !1 === o.isComplete.call(t, u) && (setTimeout((function() {\n r.trigger(\"incomplete\");\n }), 0), i.clearIncomplete && (n.resetMaskSet.call(t), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), \n (0, s.writeBuffer)(l, u, void 0, e)), t.undoValue !== t._valueGet(!0) && (t.undoValue = t._valueGet(!0), \n r.trigger(\"change\"));\n }\n },\n mouseenterEvent: function() {\n var e = this.inputmask, t = e.opts.showMaskOnHover, i = this;\n if (e.mouseEnter = !0, (i.inputmask.shadowRoot || i.ownerDocument).activeElement !== i) {\n var a = (e.isRTL ? n.getBufferTemplate.call(e).slice().reverse() : n.getBufferTemplate.call(e)).join(\"\");\n t && (0, s.HandleNativePlaceholder)(i, a);\n }\n },\n submitEvent: function() {\n var e = this.inputmask, t = e.opts;\n e.undoValue !== e._valueGet(!0) && e.$el.trigger(\"change\"), -1 === n.getLastValidPosition.call(e) && e._valueGet && e._valueGet() === n.getBufferTemplate.call(e).join(\"\") && e._valueSet(\"\"), \n t.clearIncomplete && !1 === o.isComplete.call(e, n.getBuffer.call(e)) && e._valueSet(\"\"), \n t.removeMaskOnSubmit && (e._valueSet(e.unmaskedvalue(), !0), setTimeout((function() {\n (0, s.writeBuffer)(e.el, n.getBuffer.call(e));\n }), 0));\n },\n resetEvent: function() {\n var e = this.inputmask;\n e.refreshValue = !0, setTimeout((function() {\n (0, s.applyInputValue)(e.el, e._valueGet(!0));\n }), 0);\n }\n };\n t.EventHandlers = f;\n },\n 9716: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.EventRuler = void 0;\n var n, a = (n = i(2394)) && n.__esModule ? n : {\n default: n\n }, r = i(2839), o = i(8711), s = i(7760);\n var l = {\n on: function(e, t, i) {\n var n = e.inputmask.dependencyLib, l = function(t) {\n t.originalEvent && (t = t.originalEvent || t, arguments[0] = t);\n var l, c = this, u = c.inputmask, f = u ? u.opts : void 0;\n if (void 0 === u && \"FORM\" !== this.nodeName) {\n var d = n.data(c, \"_inputmask_opts\");\n n(c).off(), d && new a.default(d).mask(c);\n } else {\n if ([ \"submit\", \"reset\", \"setvalue\" ].includes(t.type) || \"FORM\" === this.nodeName || !(c.disabled || c.readOnly && !(\"keydown\" === t.type && t.ctrlKey && t.key === r.keys.c || !1 === f.tabThrough && t.key === r.keys.Tab))) {\n switch (t.type) {\n case \"input\":\n if (!0 === u.skipInputEvent) return u.skipInputEvent = !1, t.preventDefault();\n break;\n\n case \"click\":\n case \"focus\":\n return u.validationEvent ? (u.validationEvent = !1, e.blur(), (0, s.HandleNativePlaceholder)(e, (u.isRTL ? o.getBufferTemplate.call(u).slice().reverse() : o.getBufferTemplate.call(u)).join(\"\")), \n setTimeout((function() {\n e.focus();\n }), f.validationEventTimeOut), !1) : (l = arguments, void setTimeout((function() {\n e.inputmask && i.apply(c, l);\n }), 0));\n }\n var p = i.apply(c, arguments);\n return !1 === p && (t.preventDefault(), t.stopPropagation()), p;\n }\n t.preventDefault();\n }\n };\n [ \"submit\", \"reset\" ].includes(t) ? (l = l.bind(e), null !== e.form && n(e.form).on(t, l)) : n(e).on(t, l), \n e.inputmask.events[t] = e.inputmask.events[t] || [], e.inputmask.events[t].push(l);\n },\n off: function(e, t) {\n if (e.inputmask && e.inputmask.events) {\n var i = e.inputmask.dependencyLib, n = e.inputmask.events;\n for (var a in t && ((n = [])[t] = e.inputmask.events[t]), n) {\n for (var r = n[a]; r.length > 0; ) {\n var o = r.pop();\n [ \"submit\", \"reset\" ].includes(a) ? null !== e.form && i(e.form).off(a, o) : i(e).off(a, o);\n }\n delete e.inputmask.events[a];\n }\n }\n }\n };\n t.EventRuler = l;\n },\n 219: function(e, t, i) {\n var n = d(i(2394)), a = i(2839), r = d(i(7184)), o = i(8711), s = i(4713);\n function l(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return c(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return c(e, t);\n }(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function c(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n function u(e) {\n return u = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, u(e);\n }\n function f(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), \n Object.defineProperty(e, (a = n.key, r = void 0, r = function(e, t) {\n if (\"object\" !== u(e) || null === e) return e;\n var i = e[Symbol.toPrimitive];\n if (void 0 !== i) {\n var n = i.call(e, t || \"default\");\n if (\"object\" !== u(n)) return n;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === t ? String : Number)(e);\n }(a, \"string\"), \"symbol\" === u(r) ? r : String(r)), n);\n }\n var a, r;\n }\n function d(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var p = n.default.dependencyLib, h = function() {\n function e(t, i, n) {\n !function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.mask = t, this.format = i, this.opts = n, this._date = new Date(1, 0, 1), \n this.initDateObject(t, this.opts);\n }\n var t, i, n;\n return t = e, (i = [ {\n key: \"date\",\n get: function() {\n return void 0 === this._date && (this._date = new Date(1, 0, 1), this.initDateObject(void 0, this.opts)), \n this._date;\n }\n }, {\n key: \"initDateObject\",\n value: function(e, t) {\n var i;\n for (P(t).lastIndex = 0; i = P(t).exec(this.format); ) {\n var n = new RegExp(\"\\\\d+$\").exec(i[0]), a = n ? i[0][0] + \"x\" : i[0], r = void 0;\n if (void 0 !== e) {\n if (n) {\n var o = P(t).lastIndex, s = E(i.index, t);\n P(t).lastIndex = o, r = e.slice(0, e.indexOf(s.nextMatch[0]));\n } else r = e.slice(0, g[a] && g[a][4] || a.length);\n e = e.slice(r.length);\n }\n Object.prototype.hasOwnProperty.call(g, a) && this.setValue(this, r, a, g[a][2], g[a][1]);\n }\n }\n }, {\n key: \"setValue\",\n value: function(e, t, i, n, a) {\n if (void 0 !== t && (e[n] = \"ampm\" === n ? t : t.replace(/[^0-9]/g, \"0\"), e[\"raw\" + n] = t.replace(/\\s/g, \"_\")), \n void 0 !== a) {\n var r = e[n];\n (\"day\" === n && 29 === parseInt(r) || \"month\" === n && 2 === parseInt(r)) && (29 !== parseInt(e.day) || 2 !== parseInt(e.month) || \"\" !== e.year && void 0 !== e.year || e._date.setFullYear(2012, 1, 29)), \n \"day\" === n && (m = !0, 0 === parseInt(r) && (r = 1)), \"month\" === n && (m = !0), \n \"year\" === n && (m = !0, r.length < 4 && (r = M(r, 4, !0))), \"\" === r || isNaN(r) || a.call(e._date, r), \n \"ampm\" === n && a.call(e._date, r);\n }\n }\n }, {\n key: \"reset\",\n value: function() {\n this._date = new Date(1, 0, 1);\n }\n }, {\n key: \"reInit\",\n value: function() {\n this._date = void 0, this.date;\n }\n } ]) && f(t.prototype, i), n && f(t, n), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e;\n }(), v = (new Date).getFullYear(), m = !1, g = {\n d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n return M(Date.prototype.getDate.call(this), 2);\n } ],\n ddd: [ \"\" ],\n dddd: [ \"\" ],\n m: [ \"[1-9]|1[012]\", function(e) {\n var t = e ? parseInt(e) : 0;\n return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n }, \"month\", function() {\n return Date.prototype.getMonth.call(this) + 1;\n } ],\n mm: [ \"0[1-9]|1[012]\", function(e) {\n var t = e ? parseInt(e) : 0;\n return t > 0 && t--, Date.prototype.setMonth.call(this, t);\n }, \"month\", function() {\n return M(Date.prototype.getMonth.call(this) + 1, 2);\n } ],\n mmm: [ \"\" ],\n mmmm: [ \"\" ],\n yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n return M(Date.prototype.getFullYear.call(this), 2);\n } ],\n yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n return M(Date.prototype.getFullYear.call(this), 4);\n } ],\n h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n return M(Date.prototype.getHours.call(this), 2);\n } ],\n hx: [ function(e) {\n return \"[0-9]{\".concat(e, \"}\");\n }, Date.prototype.setHours, \"hours\", function(e) {\n return Date.prototype.getHours;\n } ],\n H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n return M(Date.prototype.getHours.call(this), 2);\n } ],\n Hx: [ function(e) {\n return \"[0-9]{\".concat(e, \"}\");\n }, Date.prototype.setHours, \"hours\", function(e) {\n return function() {\n return M(Date.prototype.getHours.call(this), e);\n };\n } ],\n M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n return M(Date.prototype.getMinutes.call(this), 2);\n } ],\n s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n return M(Date.prototype.getSeconds.call(this), 2);\n } ],\n l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return M(Date.prototype.getMilliseconds.call(this), 3);\n }, 3 ],\n L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return M(Date.prototype.getMilliseconds.call(this), 2);\n }, 2 ],\n t: [ \"[ap]\", k, \"ampm\", b, 1 ],\n tt: [ \"[ap]m\", k, \"ampm\", b, 2 ],\n T: [ \"[AP]\", k, \"ampm\", b, 1 ],\n TT: [ \"[AP]M\", k, \"ampm\", b, 2 ],\n Z: [ \".*\", void 0, \"Z\", function() {\n var e = this.toString().match(/\\((.+)\\)/)[1];\n e.includes(\" \") && (e = (e = e.replace(\"-\", \" \").toUpperCase()).split(\" \").map((function(e) {\n return l(e, 1)[0];\n })).join(\"\"));\n return e;\n } ],\n o: [ \"\" ],\n S: [ \"\" ]\n }, y = {\n isoDate: \"yyyy-mm-dd\",\n isoTime: \"HH:MM:ss\",\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n function k(e) {\n var t = this.getHours();\n e.toLowerCase().includes(\"p\") ? this.setHours(t + 12) : e.toLowerCase().includes(\"a\") && t >= 12 && this.setHours(t - 12);\n }\n function b() {\n var e = this.getHours();\n return (e = e || 12) >= 12 ? \"PM\" : \"AM\";\n }\n function x(e) {\n var t = new RegExp(\"\\\\d+$\").exec(e[0]);\n if (t && void 0 !== t[0]) {\n var i = g[e[0][0] + \"x\"].slice(\"\");\n return i[0] = i[0](t[0]), i[3] = i[3](t[0]), i;\n }\n if (g[e[0]]) return g[e[0]];\n }\n function P(e) {\n if (!e.tokenizer) {\n var t = [], i = [];\n for (var n in g) if (/\\.*x$/.test(n)) {\n var a = n[0] + \"\\\\d+\";\n -1 === i.indexOf(a) && i.push(a);\n } else -1 === t.indexOf(n[0]) && t.push(n[0]);\n e.tokenizer = \"(\" + (i.length > 0 ? i.join(\"|\") + \"|\" : \"\") + t.join(\"+|\") + \")+?|.\", \n e.tokenizer = new RegExp(e.tokenizer, \"g\");\n }\n return e.tokenizer;\n }\n function w(e, t, i) {\n if (!m) return !0;\n if (void 0 === e.rawday || !isFinite(e.rawday) && new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day || \"29\" == e.day && (!isFinite(e.rawyear) || void 0 === e.rawyear || \"\" === e.rawyear) || new Date(e.date.getFullYear(), isFinite(e.rawmonth) ? e.month : e.date.getMonth() + 1, 0).getDate() >= e.day) return t;\n if (\"29\" == e.day) {\n var n = E(t.pos, i);\n if (\"yyyy\" === n.targetMatch[0] && t.pos - n.targetMatchIndex == 2) return t.remove = t.pos + 1, \n t;\n } else if (\"02\" == e.month && \"30\" == e.day && void 0 !== t.c) return e.day = \"03\", \n e.date.setDate(3), e.date.setMonth(1), t.insert = [ {\n pos: t.pos,\n c: \"0\"\n }, {\n pos: t.pos + 1,\n c: t.c\n } ], t.caret = o.seekNext.call(this, t.pos + 1), t;\n return !1;\n }\n function S(e, t, i, n) {\n var a, o, s = \"\";\n for (P(i).lastIndex = 0; a = P(i).exec(e); ) {\n if (void 0 === t) if (o = x(a)) s += \"(\" + o[0] + \")\"; else switch (a[0]) {\n case \"[\":\n s += \"(\";\n break;\n\n case \"]\":\n s += \")?\";\n break;\n\n default:\n s += (0, r.default)(a[0]);\n } else if (o = x(a)) if (!0 !== n && o[3]) s += o[3].call(t.date); else o[2] ? s += t[\"raw\" + o[2]] : s += a[0]; else s += a[0];\n }\n return s;\n }\n function M(e, t, i) {\n for (e = String(e), t = t || 2; e.length < t; ) e = i ? e + \"0\" : \"0\" + e;\n return e;\n }\n function _(e, t, i) {\n return \"string\" == typeof e ? new h(e, t, i) : e && \"object\" === u(e) && Object.prototype.hasOwnProperty.call(e, \"date\") ? e : void 0;\n }\n function O(e, t) {\n return S(t.inputFormat, {\n date: e\n }, t);\n }\n function E(e, t) {\n var i, n, a = 0, r = 0;\n for (P(t).lastIndex = 0; n = P(t).exec(t.inputFormat); ) {\n var o = new RegExp(\"\\\\d+$\").exec(n[0]);\n if ((a += r = o ? parseInt(o[0]) : n[0].length) >= e + 1) {\n i = n, n = P(t).exec(t.inputFormat);\n break;\n }\n }\n return {\n targetMatchIndex: a - r,\n nextMatch: n,\n targetMatch: i\n };\n }\n n.default.extendAliases({\n datetime: {\n mask: function(e) {\n return e.numericInput = !1, g.S = e.i18n.ordinalSuffix.join(\"|\"), e.inputFormat = y[e.inputFormat] || e.inputFormat, \n e.displayFormat = y[e.displayFormat] || e.displayFormat || e.inputFormat, e.outputFormat = y[e.outputFormat] || e.outputFormat || e.inputFormat, \n e.placeholder = \"\" !== e.placeholder ? e.placeholder : e.inputFormat.replace(/[[\\]]/, \"\"), \n e.regex = S(e.inputFormat, void 0, e), e.min = _(e.min, e.inputFormat, e), e.max = _(e.max, e.inputFormat, e), \n null;\n },\n placeholder: \"\",\n inputFormat: \"isoDateTime\",\n displayFormat: null,\n outputFormat: null,\n min: null,\n max: null,\n skipOptionalPartCharacter: \"\",\n i18n: {\n dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n },\n preValidation: function(e, t, i, n, a, r, o, s) {\n if (s) return !0;\n if (isNaN(i) && e[t] !== i) {\n var l = E(t, a);\n if (l.nextMatch && l.nextMatch[0] === i && l.targetMatch[0].length > 1) {\n var c = g[l.targetMatch[0]][0];\n if (new RegExp(c).test(\"0\" + e[t - 1])) return e[t] = e[t - 1], e[t - 1] = \"0\", \n {\n fuzzy: !0,\n buffer: e,\n refreshFromBuffer: {\n start: t - 1,\n end: t + 1\n },\n pos: t + 1\n };\n }\n }\n return !0;\n },\n postValidation: function(e, t, i, n, a, r, o, l) {\n var c, u;\n if (o) return !0;\n if (!1 === n && (((c = E(t + 1, a)).targetMatch && c.targetMatchIndex === t && c.targetMatch[0].length > 1 && void 0 !== g[c.targetMatch[0]] || (c = E(t + 2, a)).targetMatch && c.targetMatchIndex === t + 1 && c.targetMatch[0].length > 1 && void 0 !== g[c.targetMatch[0]]) && (u = g[c.targetMatch[0]][0]), \n void 0 !== u && (void 0 !== r.validPositions[t + 1] && new RegExp(u).test(i + \"0\") ? (e[t] = i, \n e[t + 1] = \"0\", n = {\n pos: t + 2,\n caret: t\n }) : new RegExp(u).test(\"0\" + i) && (e[t] = \"0\", e[t + 1] = i, n = {\n pos: t + 2\n })), !1 === n)) return n;\n if (n.fuzzy && (e = n.buffer, t = n.pos), (c = E(t, a)).targetMatch && c.targetMatch[0] && void 0 !== g[c.targetMatch[0]]) {\n var f = g[c.targetMatch[0]];\n u = f[0];\n var d = e.slice(c.targetMatchIndex, c.targetMatchIndex + c.targetMatch[0].length);\n if (!1 === new RegExp(u).test(d.join(\"\")) && 2 === c.targetMatch[0].length && r.validPositions[c.targetMatchIndex] && r.validPositions[c.targetMatchIndex + 1] && (r.validPositions[c.targetMatchIndex + 1].input = \"0\"), \n \"year\" == f[2]) for (var p = s.getMaskTemplate.call(this, !1, 1, void 0, !0), h = t + 1; h < e.length; h++) e[h] = p[h], \n delete r.validPositions[h];\n }\n var m = n, y = _(e.join(\"\"), a.inputFormat, a);\n return m && !isNaN(y.date.getTime()) && (a.prefillYear && (m = function(e, t, i) {\n if (e.year !== e.rawyear) {\n var n = v.toString(), a = e.rawyear.replace(/[^0-9]/g, \"\"), r = n.slice(0, a.length), o = n.slice(a.length);\n if (2 === a.length && a === r) {\n var s = new Date(v, e.month - 1, e.day);\n e.day == s.getDate() && (!i.max || i.max.date.getTime() >= s.getTime()) && (e.date.setFullYear(v), \n e.year = n, t.insert = [ {\n pos: t.pos + 1,\n c: o[0]\n }, {\n pos: t.pos + 2,\n c: o[1]\n } ]);\n }\n }\n return t;\n }(y, m, a)), m = function(e, t, i, n, a) {\n if (!t) return t;\n if (t && i.min && !isNaN(i.min.date.getTime())) {\n var r;\n for (e.reset(), P(i).lastIndex = 0; r = P(i).exec(i.inputFormat); ) {\n var o;\n if ((o = x(r)) && o[3]) {\n for (var s = o[1], l = e[o[2]], c = i.min[o[2]], u = i.max ? i.max[o[2]] : c, f = [], d = !1, p = 0; p < c.length; p++) void 0 !== n.validPositions[p + r.index] || d ? (f[p] = l[p], \n d = d || l[p] > c[p]) : (f[p] = c[p], \"year\" === o[2] && l.length - 1 == p && c != u && (f = (parseInt(f.join(\"\")) + 1).toString().split(\"\")), \n \"ampm\" === o[2] && c != u && i.min.date.getTime() > e.date.getTime() && (f[p] = u[p]));\n s.call(e._date, f.join(\"\"));\n }\n }\n t = i.min.date.getTime() <= e.date.getTime(), e.reInit();\n }\n return t && i.max && (isNaN(i.max.date.getTime()) || (t = i.max.date.getTime() >= e.date.getTime())), \n t;\n }(y, m = w.call(this, y, m, a), a, r)), void 0 !== t && m && n.pos !== t ? {\n buffer: S(a.inputFormat, y, a).split(\"\"),\n refreshFromBuffer: {\n start: t,\n end: n.pos\n },\n pos: n.caret || n.pos\n } : m;\n },\n onKeyDown: function(e, t, i, n) {\n e.ctrlKey && e.key === a.keys.ArrowRight && (this.inputmask._valueSet(O(new Date, n)), \n p(this).trigger(\"setvalue\"));\n },\n onUnMask: function(e, t, i) {\n return t ? S(i.outputFormat, _(e, i.inputFormat, i), i, !0) : t;\n },\n casing: function(e, t, i, n) {\n return 0 == t.nativeDef.indexOf(\"[ap]\") ? e.toLowerCase() : 0 == t.nativeDef.indexOf(\"[AP]\") ? e.toUpperCase() : e;\n },\n onBeforeMask: function(e, t) {\n return \"[object Date]\" === Object.prototype.toString.call(e) && (e = O(e, t)), e;\n },\n insertMode: !1,\n insertModeVisual: !1,\n shiftPositions: !1,\n keepStatic: !1,\n inputmode: \"numeric\",\n prefillYear: !0\n }\n });\n },\n 3851: function(e, t, i) {\n var n, a = (n = i(2394)) && n.__esModule ? n : {\n default: n\n }, r = i(8711), o = i(4713);\n a.default.extendDefinitions({\n A: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"&\": {\n validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n casing: \"upper\"\n },\n \"#\": {\n validator: \"[0-9A-Fa-f]\",\n casing: \"upper\"\n }\n });\n var s = new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\");\n function l(e, t, i, n, a) {\n return i - 1 > -1 && \".\" !== t.buffer[i - 1] ? (e = t.buffer[i - 1] + e, e = i - 2 > -1 && \".\" !== t.buffer[i - 2] ? t.buffer[i - 2] + e : \"0\" + e) : e = \"00\" + e, \n s.test(e);\n }\n a.default.extendAliases({\n cssunit: {\n regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n },\n url: {\n regex: \"(https?|ftp)://.*\",\n autoUnmask: !1,\n keepStatic: !1,\n tabThrough: !0\n },\n ip: {\n mask: \"i{1,3}.j{1,3}.k{1,3}.l{1,3}\",\n definitions: {\n i: {\n validator: l\n },\n j: {\n validator: l\n },\n k: {\n validator: l\n },\n l: {\n validator: l\n }\n },\n onUnMask: function(e, t, i) {\n return e;\n },\n inputmode: \"decimal\",\n substitutes: {\n \",\": \".\"\n }\n },\n email: {\n mask: function(e) {\n var t = e.separator, i = e.quantifier, n = \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\", a = n;\n if (t) for (var r = 0; r < i; r++) a += \"[\".concat(t).concat(n, \"]\");\n return a;\n },\n greedy: !1,\n casing: \"lower\",\n separator: null,\n quantifier: 5,\n skipOptionalPartCharacter: \"\",\n onBeforePaste: function(e, t) {\n return (e = e.toLowerCase()).replace(\"mailto:\", \"\");\n },\n definitions: {\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n },\n \"-\": {\n validator: \"[0-9A-Za-z-]\"\n }\n },\n onUnMask: function(e, t, i) {\n return e;\n },\n inputmode: \"email\"\n },\n mac: {\n mask: \"##:##:##:##:##:##\"\n },\n vin: {\n mask: \"V{13}9{4}\",\n definitions: {\n V: {\n validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n casing: \"upper\"\n }\n },\n clearIncomplete: !0,\n autoUnmask: !0\n },\n ssn: {\n mask: \"999-99-9999\",\n postValidation: function(e, t, i, n, a, s, l) {\n var c = o.getMaskTemplate.call(this, !0, r.getLastValidPosition.call(this), !0, !0);\n return /^(?!219-09-9999|078-05-1120)(?!666|000|9.{2}).{3}-(?!00).{2}-(?!0{4}).{4}$/.test(c.join(\"\"));\n }\n }\n });\n },\n 207: function(e, t, i) {\n var n = s(i(2394)), a = s(i(7184)), r = i(8711), o = i(2839);\n function s(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var l = n.default.dependencyLib;\n function c(e, t) {\n for (var i = \"\", a = 0; a < e.length; a++) n.default.prototype.definitions[e.charAt(a)] || t.definitions[e.charAt(a)] || t.optionalmarker[0] === e.charAt(a) || t.optionalmarker[1] === e.charAt(a) || t.quantifiermarker[0] === e.charAt(a) || t.quantifiermarker[1] === e.charAt(a) || t.groupmarker[0] === e.charAt(a) || t.groupmarker[1] === e.charAt(a) || t.alternatormarker === e.charAt(a) ? i += \"\\\\\" + e.charAt(a) : i += e.charAt(a);\n return i;\n }\n function u(e, t, i, n) {\n if (e.length > 0 && t > 0 && (!i.digitsOptional || n)) {\n var a = e.indexOf(i.radixPoint), r = !1;\n i.negationSymbol.back === e[e.length - 1] && (r = !0, e.length--), -1 === a && (e.push(i.radixPoint), \n a = e.length - 1);\n for (var o = 1; o <= t; o++) isFinite(e[a + o]) || (e[a + o] = \"0\");\n }\n return r && e.push(i.negationSymbol.back), e;\n }\n function f(e, t) {\n var i = 0;\n for (var n in \"+\" === e && (i = r.seekNext.call(this, t.validPositions.length - 1)), \n t.tests) if ((n = parseInt(n)) >= i) for (var a = 0, o = t.tests[n].length; a < o; a++) if ((void 0 === t.validPositions[n] || \"-\" === e) && t.tests[n][a].match.def === e) return n + (void 0 !== t.validPositions[n] && \"-\" !== e ? 1 : 0);\n return i;\n }\n function d(e, t) {\n for (var i = -1, n = 0, a = t.validPositions.length; n < a; n++) {\n var r = t.validPositions[n];\n if (r && r.match.def === e) {\n i = n;\n break;\n }\n }\n return i;\n }\n function p(e, t, i, n, a) {\n var r = t.buffer ? t.buffer.indexOf(a.radixPoint) : -1, o = (-1 !== r || n && a.jitMasking) && new RegExp(a.definitions[9].validator).test(e);\n return a._radixDance && -1 !== r && o && null == t.validPositions[r] ? {\n insert: {\n pos: r === i ? r + 1 : r,\n c: a.radixPoint\n },\n pos: i\n } : o;\n }\n n.default.extendAliases({\n numeric: {\n mask: function(e) {\n e.repeat = 0, e.groupSeparator === e.radixPoint && e.digits && \"0\" !== e.digits && (\".\" === e.radixPoint ? e.groupSeparator = \",\" : \",\" === e.radixPoint ? e.groupSeparator = \".\" : e.groupSeparator = \"\"), \n \" \" === e.groupSeparator && (e.skipOptionalPartCharacter = void 0), e.placeholder.length > 1 && (e.placeholder = e.placeholder.charAt(0)), \n \"radixFocus\" === e.positionCaretOnClick && \"\" === e.placeholder && (e.positionCaretOnClick = \"lvp\");\n var t = \"0\", i = e.radixPoint;\n !0 === e.numericInput && void 0 === e.__financeInput ? (t = \"1\", e.positionCaretOnClick = \"radixFocus\" === e.positionCaretOnClick ? \"lvp\" : e.positionCaretOnClick, \n e.digitsOptional = !1, isNaN(e.digits) && (e.digits = 2), e._radixDance = !1, i = \",\" === e.radixPoint ? \"?\" : \"!\", \n \"\" !== e.radixPoint && void 0 === e.definitions[i] && (e.definitions[i] = {}, e.definitions[i].validator = \"[\" + e.radixPoint + \"]\", \n e.definitions[i].placeholder = e.radixPoint, e.definitions[i].static = !0, e.definitions[i].generated = !0)) : (e.__financeInput = !1, \n e.numericInput = !0);\n var n, r = \"[+]\";\n if (r += c(e.prefix, e), \"\" !== e.groupSeparator ? (void 0 === e.definitions[e.groupSeparator] && (e.definitions[e.groupSeparator] = {}, \n e.definitions[e.groupSeparator].validator = \"[\" + e.groupSeparator + \"]\", e.definitions[e.groupSeparator].placeholder = e.groupSeparator, \n e.definitions[e.groupSeparator].static = !0, e.definitions[e.groupSeparator].generated = !0), \n r += e._mask(e)) : r += \"9{+}\", void 0 !== e.digits && 0 !== e.digits) {\n var o = e.digits.toString().split(\",\");\n isFinite(o[0]) && o[1] && isFinite(o[1]) ? r += i + t + \"{\" + e.digits + \"}\" : (isNaN(e.digits) || parseInt(e.digits) > 0) && (e.digitsOptional || e.jitMasking ? (n = r + i + t + \"{0,\" + e.digits + \"}\", \n e.keepStatic = !0) : r += i + t + \"{\" + e.digits + \"}\");\n } else e.inputmode = \"numeric\";\n return r += c(e.suffix, e), r += \"[-]\", n && (r = [ n + c(e.suffix, e) + \"[-]\", r ]), \n e.greedy = !1, function(e) {\n void 0 === e.parseMinMaxOptions && (null !== e.min && (e.min = e.min.toString().replace(new RegExp((0, \n a.default)(e.groupSeparator), \"g\"), \"\"), \",\" === e.radixPoint && (e.min = e.min.replace(e.radixPoint, \".\")), \n e.min = isFinite(e.min) ? parseFloat(e.min) : NaN, isNaN(e.min) && (e.min = Number.MIN_VALUE)), \n null !== e.max && (e.max = e.max.toString().replace(new RegExp((0, a.default)(e.groupSeparator), \"g\"), \"\"), \n \",\" === e.radixPoint && (e.max = e.max.replace(e.radixPoint, \".\")), e.max = isFinite(e.max) ? parseFloat(e.max) : NaN, \n isNaN(e.max) && (e.max = Number.MAX_VALUE)), e.parseMinMaxOptions = \"done\");\n }(e), \"\" !== e.radixPoint && e.substituteRadixPoint && (e.substitutes[\".\" == e.radixPoint ? \",\" : \".\"] = e.radixPoint), \n r;\n },\n _mask: function(e) {\n return \"(\" + e.groupSeparator + \"999){+|1}\";\n },\n digits: \"*\",\n digitsOptional: !0,\n enforceDigitsOnBlur: !1,\n radixPoint: \".\",\n positionCaretOnClick: \"radixFocus\",\n _radixDance: !0,\n groupSeparator: \"\",\n allowMinus: !0,\n negationSymbol: {\n front: \"-\",\n back: \"\"\n },\n prefix: \"\",\n suffix: \"\",\n min: null,\n max: null,\n SetMaxOnOverflow: !1,\n step: 1,\n inputType: \"text\",\n unmaskAsNumber: !1,\n roundingFN: Math.round,\n inputmode: \"decimal\",\n shortcuts: {\n k: \"1000\",\n m: \"1000000\"\n },\n placeholder: \"0\",\n greedy: !1,\n rightAlign: !0,\n insertMode: !0,\n autoUnmask: !1,\n skipOptionalPartCharacter: \"\",\n usePrototypeDefinitions: !1,\n stripLeadingZeroes: !0,\n substituteRadixPoint: !0,\n definitions: {\n 0: {\n validator: p\n },\n 1: {\n validator: p,\n definitionSymbol: \"9\"\n },\n 9: {\n validator: \"[0-9\\uff10-\\uff19\\u0660-\\u0669\\u06f0-\\u06f9]\",\n definitionSymbol: \"*\"\n },\n \"+\": {\n validator: function(e, t, i, n, a) {\n return a.allowMinus && (\"-\" === e || e === a.negationSymbol.front);\n }\n },\n \"-\": {\n validator: function(e, t, i, n, a) {\n return a.allowMinus && e === a.negationSymbol.back;\n }\n }\n },\n preValidation: function(e, t, i, n, a, r, o, s) {\n if (!1 !== a.__financeInput && i === a.radixPoint) return !1;\n var l = e.indexOf(a.radixPoint), c = t;\n if (t = function(e, t, i, n, a) {\n return a._radixDance && a.numericInput && t !== a.negationSymbol.back && e <= i && (i > 0 || t == a.radixPoint) && (void 0 === n.validPositions[e - 1] || n.validPositions[e - 1].input !== a.negationSymbol.back) && (e -= 1), \n e;\n }(t, i, l, r, a), \"-\" === i || i === a.negationSymbol.front) {\n if (!0 !== a.allowMinus) return !1;\n var u = !1, p = d(\"+\", r), h = d(\"-\", r);\n return -1 !== p && (u = [ p, h ]), !1 !== u ? {\n remove: u,\n caret: c - a.negationSymbol.back.length\n } : {\n insert: [ {\n pos: f.call(this, \"+\", r),\n c: a.negationSymbol.front,\n fromIsValid: !0\n }, {\n pos: f.call(this, \"-\", r),\n c: a.negationSymbol.back,\n fromIsValid: void 0\n } ],\n caret: c + a.negationSymbol.back.length\n };\n }\n if (i === a.groupSeparator) return {\n caret: c\n };\n if (s) return !0;\n if (-1 !== l && !0 === a._radixDance && !1 === n && i === a.radixPoint && void 0 !== a.digits && (isNaN(a.digits) || parseInt(a.digits) > 0) && l !== t) return {\n caret: a._radixDance && t === l - 1 ? l + 1 : l\n };\n if (!1 === a.__financeInput) if (n) {\n if (a.digitsOptional) return {\n rewritePosition: o.end\n };\n if (!a.digitsOptional) {\n if (o.begin > l && o.end <= l) return i === a.radixPoint ? {\n insert: {\n pos: l + 1,\n c: \"0\",\n fromIsValid: !0\n },\n rewritePosition: l\n } : {\n rewritePosition: l + 1\n };\n if (o.begin < l) return {\n rewritePosition: o.begin - 1\n };\n }\n } else if (!a.showMaskOnHover && !a.showMaskOnFocus && !a.digitsOptional && a.digits > 0 && \"\" === this.__valueGet.call(this.el)) return {\n rewritePosition: l\n };\n return {\n rewritePosition: t\n };\n },\n postValidation: function(e, t, i, n, a, r, o) {\n if (!1 === n) return n;\n if (o) return !0;\n if (null !== a.min || null !== a.max) {\n var s = a.onUnMask(e.slice().reverse().join(\"\"), void 0, l.extend({}, a, {\n unmaskAsNumber: !0\n }));\n if (null !== a.min && s < a.min && (s.toString().length > a.min.toString().length || s < 0)) return !1;\n if (null !== a.max && s > a.max) return !!a.SetMaxOnOverflow && {\n refreshFromBuffer: !0,\n buffer: u(a.max.toString().replace(\".\", a.radixPoint).split(\"\"), a.digits, a).reverse()\n };\n }\n return n;\n },\n onUnMask: function(e, t, i) {\n if (\"\" === t && !0 === i.nullable) return t;\n var n = e.replace(i.prefix, \"\");\n return n = (n = n.replace(i.suffix, \"\")).replace(new RegExp((0, a.default)(i.groupSeparator), \"g\"), \"\"), \n \"\" !== i.placeholder.charAt(0) && (n = n.replace(new RegExp(i.placeholder.charAt(0), \"g\"), \"0\")), \n i.unmaskAsNumber ? (\"\" !== i.radixPoint && -1 !== n.indexOf(i.radixPoint) && (n = n.replace(a.default.call(this, i.radixPoint), \".\")), \n n = (n = n.replace(new RegExp(\"^\" + (0, a.default)(i.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n a.default)(i.negationSymbol.back) + \"$\"), \"\"), Number(n)) : n;\n },\n isComplete: function(e, t) {\n var i = (t.numericInput ? e.slice().reverse() : e).join(\"\");\n return i = (i = (i = (i = (i = i.replace(new RegExp(\"^\" + (0, a.default)(t.negationSymbol.front)), \"-\")).replace(new RegExp((0, \n a.default)(t.negationSymbol.back) + \"$\"), \"\")).replace(t.prefix, \"\")).replace(t.suffix, \"\")).replace(new RegExp((0, \n a.default)(t.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \",\" === t.radixPoint && (i = i.replace((0, \n a.default)(t.radixPoint), \".\")), isFinite(i);\n },\n onBeforeMask: function(e, t) {\n var i = t.radixPoint || \",\";\n isFinite(t.digits) && (t.digits = parseInt(t.digits)), \"number\" != typeof e && \"number\" !== t.inputType || \"\" === i || (e = e.toString().replace(\".\", i));\n var n = \"-\" === e.charAt(0) || e.charAt(0) === t.negationSymbol.front, r = e.split(i), o = r[0].replace(/[^\\-0-9]/g, \"\"), s = r.length > 1 ? r[1].replace(/[^0-9]/g, \"\") : \"\", l = r.length > 1;\n e = o + (\"\" !== s ? i + s : s);\n var c = 0;\n if (\"\" !== i && (c = t.digitsOptional ? t.digits < s.length ? t.digits : s.length : t.digits, \n \"\" !== s || !t.digitsOptional)) {\n var f = Math.pow(10, c || 1);\n e = e.replace((0, a.default)(i), \".\"), isNaN(parseFloat(e)) || (e = (t.roundingFN(parseFloat(e) * f) / f).toFixed(c)), \n e = e.toString().replace(\".\", i);\n }\n if (0 === t.digits && -1 !== e.indexOf(i) && (e = e.substring(0, e.indexOf(i))), \n null !== t.min || null !== t.max) {\n var d = e.toString().replace(i, \".\");\n null !== t.min && d < t.min ? e = t.min.toString().replace(\".\", i) : null !== t.max && d > t.max && (e = t.max.toString().replace(\".\", i));\n }\n return n && \"-\" !== e.charAt(0) && (e = \"-\" + e), u(e.toString().split(\"\"), c, t, l).join(\"\");\n },\n onBeforeWrite: function(e, t, i, n) {\n function r(e, t) {\n if (!1 !== n.__financeInput || t) {\n var i = e.indexOf(n.radixPoint);\n -1 !== i && e.splice(i, 1);\n }\n if (\"\" !== n.groupSeparator) for (;-1 !== (i = e.indexOf(n.groupSeparator)); ) e.splice(i, 1);\n return e;\n }\n var o, s;\n if (n.stripLeadingZeroes && (s = function(e, t) {\n var i = new RegExp(\"(^\" + (\"\" !== t.negationSymbol.front ? (0, a.default)(t.negationSymbol.front) + \"?\" : \"\") + (0, \n a.default)(t.prefix) + \")(.*)(\" + (0, a.default)(t.suffix) + (\"\" != t.negationSymbol.back ? (0, \n a.default)(t.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(e.slice().reverse().join(\"\")), n = i ? i[2] : \"\", r = !1;\n return n && (n = n.split(t.radixPoint.charAt(0))[0], r = new RegExp(\"^[0\" + t.groupSeparator + \"]*\").exec(n)), \n !(!r || !(r[0].length > 1 || r[0].length > 0 && r[0].length < n.length)) && r;\n }(t, n))) for (var c = t.join(\"\").lastIndexOf(s[0].split(\"\").reverse().join(\"\")) - (s[0] == s.input ? 0 : 1), f = s[0] == s.input ? 1 : 0, d = s[0].length - f; d > 0; d--) delete this.maskset.validPositions[c + d], \n delete t[c + d];\n if (e) switch (e.type) {\n case \"blur\":\n case \"checkval\":\n if (null !== n.min) {\n var p = n.onUnMask(t.slice().reverse().join(\"\"), void 0, l.extend({}, n, {\n unmaskAsNumber: !0\n }));\n if (null !== n.min && p < n.min) return {\n refreshFromBuffer: !0,\n buffer: u(n.min.toString().replace(\".\", n.radixPoint).split(\"\"), n.digits, n).reverse()\n };\n }\n if (t[t.length - 1] === n.negationSymbol.front) {\n var h = new RegExp(\"(^\" + (\"\" != n.negationSymbol.front ? (0, a.default)(n.negationSymbol.front) + \"?\" : \"\") + (0, \n a.default)(n.prefix) + \")(.*)(\" + (0, a.default)(n.suffix) + (\"\" != n.negationSymbol.back ? (0, \n a.default)(n.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(r(t.slice(), !0).reverse().join(\"\"));\n 0 == (h ? h[2] : \"\") && (o = {\n refreshFromBuffer: !0,\n buffer: [ 0 ]\n });\n } else if (\"\" !== n.radixPoint) {\n t.indexOf(n.radixPoint) === n.suffix.length && (o && o.buffer ? o.buffer.splice(0, 1 + n.suffix.length) : (t.splice(0, 1 + n.suffix.length), \n o = {\n refreshFromBuffer: !0,\n buffer: r(t)\n }));\n }\n if (n.enforceDigitsOnBlur) {\n var v = (o = o || {}) && o.buffer || t.slice().reverse();\n o.refreshFromBuffer = !0, o.buffer = u(v, n.digits, n, !0).reverse();\n }\n }\n return o;\n },\n onKeyDown: function(e, t, i, n) {\n var a, r = l(this);\n if (3 != e.location) {\n var s, c = e.key;\n if ((s = n.shortcuts && n.shortcuts[c]) && s.length > 1) return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(s)), \n r.trigger(\"setvalue\"), !1;\n }\n if (e.ctrlKey) switch (e.key) {\n case o.keys.ArrowUp:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(n.step)), \n r.trigger(\"setvalue\"), !1;\n\n case o.keys.ArrowDown:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(n.step)), \n r.trigger(\"setvalue\"), !1;\n }\n if (!e.shiftKey && (e.key === o.keys.Delete || e.key === o.keys.Backspace || e.key === o.keys.BACKSPACE_SAFARI) && i.begin !== t.length) {\n if (t[e.key === o.keys.Delete ? i.begin - 1 : i.end] === n.negationSymbol.front) return a = t.slice().reverse(), \n \"\" !== n.negationSymbol.front && a.shift(), \"\" !== n.negationSymbol.back && a.pop(), \n r.trigger(\"setvalue\", [ a.join(\"\"), i.begin ]), !1;\n if (!0 === n._radixDance) {\n var f = t.indexOf(n.radixPoint);\n if (n.digitsOptional) {\n if (0 === f) return (a = t.slice().reverse()).pop(), r.trigger(\"setvalue\", [ a.join(\"\"), i.begin >= a.length ? a.length : i.begin ]), \n !1;\n } else if (-1 !== f && (i.begin < f || i.end < f || e.key === o.keys.Delete && (i.begin === f || i.begin - 1 === f))) {\n var d = void 0;\n return i.begin === i.end && (e.key === o.keys.Backspace || e.key === o.keys.BACKSPACE_SAFARI ? i.begin++ : e.key === o.keys.Delete && i.begin - 1 === f && (d = l.extend({}, i), \n i.begin--, i.end--)), (a = t.slice().reverse()).splice(a.length - i.begin, i.begin - i.end + 1), \n a = u(a, n.digits, n).join(\"\"), d && (i = d), r.trigger(\"setvalue\", [ a, i.begin >= a.length ? f + 1 : i.begin ]), \n !1;\n }\n }\n }\n }\n },\n currency: {\n prefix: \"\",\n groupSeparator: \",\",\n alias: \"numeric\",\n digits: 2,\n digitsOptional: !1\n },\n decimal: {\n alias: \"numeric\"\n },\n integer: {\n alias: \"numeric\",\n inputmode: \"numeric\",\n digits: 0\n },\n percentage: {\n alias: \"numeric\",\n min: 0,\n max: 100,\n suffix: \" %\",\n digits: 0,\n allowMinus: !1\n },\n indianns: {\n alias: \"numeric\",\n _mask: function(e) {\n return \"(\" + e.groupSeparator + \"99){*|1}(\" + e.groupSeparator + \"999){1|1}\";\n },\n groupSeparator: \",\",\n radixPoint: \".\",\n placeholder: \"0\",\n digits: 2,\n digitsOptional: !1\n }\n });\n },\n 9380: function(e, t, i) {\n var n;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var a = ((n = i(8741)) && n.__esModule ? n : {\n default: n\n }).default ? window : {};\n t.default = a;\n },\n 7760: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.HandleNativePlaceholder = function(e, t) {\n var i = e ? e.inputmask : this;\n if (s.ie) {\n if (e.inputmask._valueGet() !== t && (e.placeholder !== t || \"\" === e.placeholder)) {\n var n = r.getBuffer.call(i).slice(), a = e.inputmask._valueGet();\n if (a !== t) {\n var o = r.getLastValidPosition.call(i);\n -1 === o && a === r.getBufferTemplate.call(i).join(\"\") ? n = [] : -1 !== o && u.call(i, n), \n d(e, n);\n }\n }\n } else e.placeholder !== t && (e.placeholder = t, \"\" === e.placeholder && e.removeAttribute(\"placeholder\"));\n }, t.applyInputValue = c, t.checkVal = f, t.clearOptionalTail = u, t.unmaskedvalue = function(e) {\n var t = e ? e.inputmask : this, i = t.opts, n = t.maskset;\n if (e) {\n if (void 0 === e.inputmask) return e.value;\n e.inputmask && e.inputmask.refreshValue && c(e, e.inputmask._valueGet(!0));\n }\n for (var a = [], o = n.validPositions, s = 0, l = o.length; s < l; s++) o[s] && o[s].match && (1 != o[s].match.static || Array.isArray(n.metadata) && !0 !== o[s].generatedInput) && a.push(o[s].input);\n var u = 0 === a.length ? \"\" : (t.isRTL ? a.reverse() : a).join(\"\");\n if (\"function\" == typeof i.onUnMask) {\n var f = (t.isRTL ? r.getBuffer.call(t).slice().reverse() : r.getBuffer.call(t)).join(\"\");\n u = i.onUnMask.call(t, f, u, i);\n }\n return u;\n }, t.writeBuffer = d;\n var n = i(2839), a = i(4713), r = i(8711), o = i(7215), s = i(9845), l = i(6030);\n function c(e, t) {\n var i = e ? e.inputmask : this, n = i.opts;\n e.inputmask.refreshValue = !1, \"function\" == typeof n.onBeforeMask && (t = n.onBeforeMask.call(i, t, n) || t), \n f(e, !0, !1, t = (t || \"\").toString().split(\"\")), i.undoValue = i._valueGet(!0), \n (n.clearMaskOnLostFocus || n.clearIncomplete) && e.inputmask._valueGet() === r.getBufferTemplate.call(i).join(\"\") && -1 === r.getLastValidPosition.call(i) && e.inputmask._valueSet(\"\");\n }\n function u(e) {\n e.length = 0;\n for (var t, i = a.getMaskTemplate.call(this, !0, 0, !0, void 0, !0); void 0 !== (t = i.shift()); ) e.push(t);\n return e;\n }\n function f(e, t, i, n, s) {\n var c = e ? e.inputmask : this, u = c.maskset, f = c.opts, p = c.dependencyLib, h = n.slice(), v = \"\", m = -1, g = void 0, y = f.skipOptionalPartCharacter;\n f.skipOptionalPartCharacter = \"\", r.resetMaskSet.call(c), u.tests = {}, m = f.radixPoint ? r.determineNewCaretPosition.call(c, {\n begin: 0,\n end: 0\n }, !1, !1 === f.__financeInput ? \"radixFocus\" : void 0).begin : 0, u.p = m, c.caretPos = {\n begin: m\n };\n var k = [], b = c.caretPos;\n if (h.forEach((function(e, t) {\n if (void 0 !== e) {\n var n = new p.Event(\"_checkval\");\n n.key = e, v += e;\n var o = r.getLastValidPosition.call(c, void 0, !0);\n !function(e, t) {\n for (var i = a.getMaskTemplate.call(c, !0, 0).slice(e, r.seekNext.call(c, e, !1, !1)).join(\"\").replace(/'/g, \"\"), n = i.indexOf(t); n > 0 && \" \" === i[n - 1]; ) n--;\n var o = 0 === n && !r.isMask.call(c, e) && (a.getTest.call(c, e).match.nativeDef === t.charAt(0) || !0 === a.getTest.call(c, e).match.static && a.getTest.call(c, e).match.nativeDef === \"'\" + t.charAt(0) || \" \" === a.getTest.call(c, e).match.nativeDef && (a.getTest.call(c, e + 1).match.nativeDef === t.charAt(0) || !0 === a.getTest.call(c, e + 1).match.static && a.getTest.call(c, e + 1).match.nativeDef === \"'\" + t.charAt(0)));\n if (!o && n > 0 && !r.isMask.call(c, e, !1, !0)) {\n var s = r.seekNext.call(c, e);\n c.caretPos.begin < s && (c.caretPos = {\n begin: s\n });\n }\n return o;\n }(m, v) ? (g = l.EventHandlers.keypressEvent.call(c, n, !0, !1, i, c.caretPos.begin)) && (m = c.caretPos.begin + 1, \n v = \"\") : g = l.EventHandlers.keypressEvent.call(c, n, !0, !1, i, o + 1), g ? (void 0 !== g.pos && u.validPositions[g.pos] && !0 === u.validPositions[g.pos].match.static && void 0 === u.validPositions[g.pos].alternation && (k.push(g.pos), \n c.isRTL || (g.forwardPosition = g.pos + 1)), d.call(c, void 0, r.getBuffer.call(c), g.forwardPosition, n, !1), \n c.caretPos = {\n begin: g.forwardPosition,\n end: g.forwardPosition\n }, b = c.caretPos) : void 0 === u.validPositions[t] && h[t] === a.getPlaceholder.call(c, t) && r.isMask.call(c, t, !0) ? c.caretPos.begin++ : c.caretPos = b;\n }\n })), k.length > 0) {\n var x, P, w = r.seekNext.call(c, -1, void 0, !1);\n if (!o.isComplete.call(c, r.getBuffer.call(c)) && k.length <= w || o.isComplete.call(c, r.getBuffer.call(c)) && k.length > 0 && k.length !== w && 0 === k[0]) for (var S = w; void 0 !== (x = k.shift()); ) {\n var M = new p.Event(\"_checkval\");\n if ((P = u.validPositions[x]).generatedInput = !0, M.key = P.input, (g = l.EventHandlers.keypressEvent.call(c, M, !0, !1, i, S)) && void 0 !== g.pos && g.pos !== x && u.validPositions[g.pos] && !0 === u.validPositions[g.pos].match.static) k.push(g.pos); else if (!g) break;\n S++;\n }\n }\n t && d.call(c, e, r.getBuffer.call(c), g ? g.forwardPosition : c.caretPos.begin, s || new p.Event(\"checkval\"), s && (\"input\" === s.type && c.undoValue !== r.getBuffer.call(c).join(\"\") || \"paste\" === s.type)), \n f.skipOptionalPartCharacter = y;\n }\n function d(e, t, i, a, s) {\n var l = e ? e.inputmask : this, c = l.opts, u = l.dependencyLib;\n if (a && \"function\" == typeof c.onBeforeWrite) {\n var f = c.onBeforeWrite.call(l, a, t, i, c);\n if (f) {\n if (f.refreshFromBuffer) {\n var d = f.refreshFromBuffer;\n o.refreshFromBuffer.call(l, !0 === d ? d : d.start, d.end, f.buffer || t), t = r.getBuffer.call(l, !0);\n }\n void 0 !== i && (i = void 0 !== f.caret ? f.caret : i);\n }\n }\n if (void 0 !== e && (e.inputmask._valueSet(t.join(\"\")), void 0 === i || void 0 !== a && \"blur\" === a.type || r.caret.call(l, e, i, void 0, void 0, void 0 !== a && \"keydown\" === a.type && (a.key === n.keys.Delete || a.key === n.keys.Backspace)), \n !0 === s)) {\n var p = u(e), h = e.inputmask._valueGet();\n e.inputmask.skipInputEvent = !0, p.trigger(\"input\"), setTimeout((function() {\n h === r.getBufferTemplate.call(l).join(\"\") ? p.trigger(\"cleared\") : !0 === o.isComplete.call(l, t) && p.trigger(\"complete\");\n }), 0);\n }\n }\n },\n 2394: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0;\n var n = i(157), a = m(i(4963)), r = m(i(9380)), o = i(2391), s = i(4713), l = i(8711), c = i(7215), u = i(7760), f = i(9716), d = m(i(7392)), p = m(i(3976)), h = m(i(8741));\n function v(e) {\n return v = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, v(e);\n }\n function m(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var g = r.default.document, y = \"_inputmask_opts\";\n function k(e, t, i) {\n if (h.default) {\n if (!(this instanceof k)) return new k(e, t, i);\n this.dependencyLib = a.default, this.el = void 0, this.events = {}, this.maskset = void 0, \n !0 !== i && (\"[object Object]\" === Object.prototype.toString.call(e) ? t = e : (t = t || {}, \n e && (t.alias = e)), this.opts = a.default.extend(!0, {}, this.defaults, t), this.noMasksCache = t && void 0 !== t.definitions, \n this.userOptions = t || {}, b(this.opts.alias, t, this.opts)), this.refreshValue = !1, \n this.undoValue = void 0, this.$el = void 0, this.skipInputEvent = !1, this.validationEvent = !1, \n this.ignorable = !1, this.maxLength, this.mouseEnter = !1, this.clicked = 0, this.originalPlaceholder = void 0, \n this.isComposing = !1, this.hasAlternator = !1;\n }\n }\n function b(e, t, i) {\n var n = k.prototype.aliases[e];\n return n ? (n.alias && b(n.alias, void 0, i), a.default.extend(!0, i, n), a.default.extend(!0, i, t), \n !0) : (null === i.mask && (i.mask = e), !1);\n }\n k.prototype = {\n dataAttribute: \"data-inputmask\",\n defaults: p.default,\n definitions: d.default,\n aliases: {},\n masksCache: {},\n get isRTL() {\n return this.opts.isRTL || this.opts.numericInput;\n },\n mask: function(e) {\n var t = this;\n return \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), \n (e = e.nodeName ? [ e ] : Array.isArray(e) ? e : [].slice.call(e)).forEach((function(e, i) {\n var s = a.default.extend(!0, {}, t.opts);\n if (function(e, t, i, n) {\n function o(t, a) {\n var o = \"\" === n ? t : n + \"-\" + t;\n null !== (a = void 0 !== a ? a : e.getAttribute(o)) && (\"string\" == typeof a && (0 === t.indexOf(\"on\") ? a = r.default[a] : \"false\" === a ? a = !1 : \"true\" === a && (a = !0)), \n i[t] = a);\n }\n if (!0 === t.importDataAttributes) {\n var s, l, c, u, f = e.getAttribute(n);\n if (f && \"\" !== f && (f = f.replace(/'/g, '\"'), l = JSON.parse(\"{\" + f + \"}\")), \n l) for (u in c = void 0, l) if (\"alias\" === u.toLowerCase()) {\n c = l[u];\n break;\n }\n for (s in o(\"alias\", c), i.alias && b(i.alias, i, t), t) {\n if (l) for (u in c = void 0, l) if (u.toLowerCase() === s.toLowerCase()) {\n c = l[u];\n break;\n }\n o(s, c);\n }\n }\n a.default.extend(!0, t, i), (\"rtl\" === e.dir || t.rightAlign) && (e.style.textAlign = \"right\");\n (\"rtl\" === e.dir || t.numericInput) && (e.dir = \"ltr\", e.removeAttribute(\"dir\"), \n t.isRTL = !0);\n return Object.keys(i).length;\n }(e, s, a.default.extend(!0, {}, t.userOptions), t.dataAttribute)) {\n var l = (0, o.generateMaskSet)(s, t.noMasksCache);\n void 0 !== l && (void 0 !== e.inputmask && (e.inputmask.opts.autoUnmask = !0, e.inputmask.remove()), \n e.inputmask = new k(void 0, void 0, !0), e.inputmask.opts = s, e.inputmask.noMasksCache = t.noMasksCache, \n e.inputmask.userOptions = a.default.extend(!0, {}, t.userOptions), e.inputmask.el = e, \n e.inputmask.$el = (0, a.default)(e), e.inputmask.maskset = l, a.default.data(e, y, t.userOptions), \n n.mask.call(e.inputmask));\n }\n })), e && e[0] && e[0].inputmask || this;\n },\n option: function(e, t) {\n return \"string\" == typeof e ? this.opts[e] : \"object\" === v(e) ? (a.default.extend(this.userOptions, e), \n this.el && !0 !== t && this.mask(this.el), this) : void 0;\n },\n unmaskedvalue: function(e) {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n void 0 === this.el || void 0 !== e) {\n var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n u.checkVal.call(this, void 0, !1, !1, t), \"function\" == typeof this.opts.onBeforeWrite && this.opts.onBeforeWrite.call(this, void 0, l.getBuffer.call(this), 0, this.opts);\n }\n return u.unmaskedvalue.call(this, this.el);\n },\n remove: function() {\n if (this.el) {\n a.default.data(this.el, y, null);\n var e = this.opts.autoUnmask ? (0, u.unmaskedvalue)(this.el) : this._valueGet(this.opts.autoUnmask);\n e !== l.getBufferTemplate.call(this).join(\"\") ? this._valueSet(e, this.opts.autoUnmask) : this._valueSet(\"\"), \n f.EventRuler.off(this.el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this.el), \"value\") && this.__valueGet && Object.defineProperty(this.el, \"value\", {\n get: this.__valueGet,\n set: this.__valueSet,\n configurable: !0\n }) : g.__lookupGetter__ && this.el.__lookupGetter__(\"value\") && this.__valueGet && (this.el.__defineGetter__(\"value\", this.__valueGet), \n this.el.__defineSetter__(\"value\", this.__valueSet)), this.el.inputmask = void 0;\n }\n return this.el;\n },\n getemptymask: function() {\n return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n (this.isRTL ? l.getBufferTemplate.call(this).reverse() : l.getBufferTemplate.call(this)).join(\"\");\n },\n hasMaskedValue: function() {\n return !this.opts.autoUnmask;\n },\n isComplete: function() {\n return this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n c.isComplete.call(this, l.getBuffer.call(this));\n },\n getmetadata: function() {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n Array.isArray(this.maskset.metadata)) {\n var e = s.getMaskTemplate.call(this, !0, 0, !1).join(\"\");\n return this.maskset.metadata.forEach((function(t) {\n return t.mask !== e || (e = t, !1);\n })), e;\n }\n return this.maskset.metadata;\n },\n isValid: function(e) {\n if (this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache), \n e) {\n var t = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n u.checkVal.call(this, void 0, !0, !1, t);\n } else e = this.isRTL ? l.getBuffer.call(this).slice().reverse().join(\"\") : l.getBuffer.call(this).join(\"\");\n for (var i = l.getBuffer.call(this), n = l.determineLastRequiredPosition.call(this), a = i.length - 1; a > n && !l.isMask.call(this, a); a--) ;\n return i.splice(n, a + 1 - n), c.isComplete.call(this, i) && e === (this.isRTL ? l.getBuffer.call(this).slice().reverse().join(\"\") : l.getBuffer.call(this).join(\"\"));\n },\n format: function(e, t) {\n this.maskset = this.maskset || (0, o.generateMaskSet)(this.opts, this.noMasksCache);\n var i = (\"function\" == typeof this.opts.onBeforeMask && this.opts.onBeforeMask.call(this, e, this.opts) || e).split(\"\");\n u.checkVal.call(this, void 0, !0, !1, i);\n var n = this.isRTL ? l.getBuffer.call(this).slice().reverse().join(\"\") : l.getBuffer.call(this).join(\"\");\n return t ? {\n value: n,\n metadata: this.getmetadata()\n } : n;\n },\n setValue: function(e) {\n this.el && (0, a.default)(this.el).trigger(\"setvalue\", [ e ]);\n },\n analyseMask: o.analyseMask\n }, k.extendDefaults = function(e) {\n a.default.extend(!0, k.prototype.defaults, e);\n }, k.extendDefinitions = function(e) {\n a.default.extend(!0, k.prototype.definitions, e);\n }, k.extendAliases = function(e) {\n a.default.extend(!0, k.prototype.aliases, e);\n }, k.format = function(e, t, i) {\n return k(t).format(e, i);\n }, k.unmask = function(e, t) {\n return k(t).unmaskedvalue(e);\n }, k.isValid = function(e, t) {\n return k(t).isValid(e);\n }, k.remove = function(e) {\n \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n e.inputmask && e.inputmask.remove();\n }));\n }, k.setValue = function(e, t) {\n \"string\" == typeof e && (e = g.getElementById(e) || g.querySelectorAll(e)), (e = e.nodeName ? [ e ] : e).forEach((function(e) {\n e.inputmask ? e.inputmask.setValue(t) : (0, a.default)(e).trigger(\"setvalue\", [ t ]);\n }));\n }, k.dependencyLib = a.default, r.default.Inputmask = k;\n var x = k;\n t.default = x;\n },\n 5296: function(e, t, i) {\n function n(e) {\n return n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, n(e);\n }\n var a = h(i(9380)), r = h(i(2394)), o = h(i(8741));\n function s(e, t) {\n for (var i = 0; i < t.length; i++) {\n var a = t[i];\n a.enumerable = a.enumerable || !1, a.configurable = !0, \"value\" in a && (a.writable = !0), \n Object.defineProperty(e, (r = a.key, o = void 0, o = function(e, t) {\n if (\"object\" !== n(e) || null === e) return e;\n var i = e[Symbol.toPrimitive];\n if (void 0 !== i) {\n var a = i.call(e, t || \"default\");\n if (\"object\" !== n(a)) return a;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === t ? String : Number)(e);\n }(r, \"string\"), \"symbol\" === n(o) ? o : String(o)), a);\n }\n var r, o;\n }\n function l(e) {\n var t = f();\n return function() {\n var i, a = p(e);\n if (t) {\n var r = p(this).constructor;\n i = Reflect.construct(a, arguments, r);\n } else i = a.apply(this, arguments);\n return function(e, t) {\n if (t && (\"object\" === n(t) || \"function\" == typeof t)) return t;\n if (void 0 !== t) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return function(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }(e);\n }(this, i);\n };\n }\n function c(e) {\n var t = \"function\" == typeof Map ? new Map : void 0;\n return c = function(e) {\n if (null === e || (i = e, -1 === Function.toString.call(i).indexOf(\"[native code]\"))) return e;\n var i;\n if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== t) {\n if (t.has(e)) return t.get(e);\n t.set(e, n);\n }\n function n() {\n return u(e, arguments, p(this).constructor);\n }\n return n.prototype = Object.create(e.prototype, {\n constructor: {\n value: n,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), d(n, e);\n }, c(e);\n }\n function u(e, t, i) {\n return u = f() ? Reflect.construct.bind() : function(e, t, i) {\n var n = [ null ];\n n.push.apply(n, t);\n var a = new (Function.bind.apply(e, n));\n return i && d(a, i.prototype), a;\n }, u.apply(null, arguments);\n }\n function f() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), \n !0;\n } catch (e) {\n return !1;\n }\n }\n function d(e, t) {\n return d = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) {\n return e.__proto__ = t, e;\n }, d(e, t);\n }\n function p(e) {\n return p = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n }, p(e);\n }\n function h(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n var v = a.default.document;\n if (o.default && v && v.head && v.head.attachShadow && a.default.customElements && void 0 === a.default.customElements.get(\"input-mask\")) {\n var m = function(e) {\n !function(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), t && d(e, t);\n }(o, e);\n var t, i, n, a = l(o);\n function o() {\n var e;\n !function(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, o);\n var t = (e = a.call(this)).getAttributeNames(), i = e.attachShadow({\n mode: \"closed\"\n }), n = v.createElement(\"input\");\n for (var s in n.type = \"text\", i.appendChild(n), t) Object.prototype.hasOwnProperty.call(t, s) && n.setAttribute(t[s], e.getAttribute(t[s]));\n var l = new r.default;\n return l.dataAttribute = \"\", l.mask(n), n.inputmask.shadowRoot = i, e;\n }\n return t = o, i && s(t.prototype, i), n && s(t, n), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), t;\n }(c(HTMLElement));\n a.default.customElements.define(\"input-mask\", m);\n }\n },\n 2839: function(e, t) {\n function i(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return n(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return n(e, t);\n }(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function n(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.keys = t.keyCode = void 0, t.toKey = function(e, t) {\n return r[e] || (t ? String.fromCharCode(e) : String.fromCharCode(e).toLowerCase());\n }, t.toKeyCode = function(e) {\n return a[e];\n };\n var a = {\n AltGraph: 18,\n ArrowDown: 40,\n ArrowLeft: 37,\n ArrowRight: 39,\n ArrowUp: 38,\n Backspace: 8,\n BACKSPACE_SAFARI: 127,\n CapsLock: 20,\n Delete: 46,\n End: 35,\n Enter: 13,\n Escape: 27,\n Home: 36,\n Insert: 45,\n PageDown: 34,\n PageUp: 33,\n Space: 32,\n Tab: 9,\n c: 67,\n x: 88,\n z: 90,\n Shift: 16,\n Control: 17,\n Alt: 18,\n Pause: 19,\n Meta_LEFT: 91,\n Meta_RIGHT: 92,\n ContextMenu: 93,\n Process: 229,\n Unidentified: 229,\n F1: 112,\n F2: 113,\n F3: 114,\n F4: 115,\n F5: 116,\n F6: 117,\n F7: 118,\n F8: 119,\n F9: 120,\n F10: 121,\n F11: 122,\n F12: 123\n };\n t.keyCode = a;\n var r = Object.entries(a).reduce((function(e, t) {\n var n = i(t, 2), a = n[0], r = n[1];\n return e[r] = void 0 === e[r] ? a : e[r], e;\n }), {}), o = Object.entries(a).reduce((function(e, t) {\n var n = i(t, 2), a = n[0];\n n[1];\n return e[a] = \"Space\" === a ? \" \" : a, e;\n }), {});\n t.keys = o;\n },\n 2391: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.analyseMask = function(e, t, i) {\n var n, o, s, l, c, u, f = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, d = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, p = !1, h = new a.default, v = [], m = [], g = !1;\n function y(e, n, a) {\n a = void 0 !== a ? a : e.matches.length;\n var o = e.matches[a - 1];\n if (t) {\n if (0 === n.indexOf(\"[\") || p && /\\\\d|\\\\s|\\\\w|\\\\p/i.test(n) || \".\" === n) {\n var s = i.casing ? \"i\" : \"\";\n /^\\\\p\\{.*}$/i.test(n) && (s += \"u\"), e.matches.splice(a++, 0, {\n fn: new RegExp(n, s),\n static: !1,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== n,\n casing: null,\n def: n,\n placeholder: void 0,\n nativeDef: n\n });\n } else p && (n = n[n.length - 1]), n.split(\"\").forEach((function(t, n) {\n o = e.matches[a - 1], e.matches.splice(a++, 0, {\n fn: /[a-z]/i.test(i.staticDefinitionSymbol || t) ? new RegExp(\"[\" + (i.staticDefinitionSymbol || t) + \"]\", i.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== t && !0 !== o.static,\n casing: null,\n def: i.staticDefinitionSymbol || t,\n placeholder: void 0 !== i.staticDefinitionSymbol ? t : void 0,\n nativeDef: (p ? \"'\" : \"\") + t\n });\n }));\n p = !1;\n } else {\n var l = i.definitions && i.definitions[n] || i.usePrototypeDefinitions && r.default.prototype.definitions[n];\n l && !p ? e.matches.splice(a++, 0, {\n fn: l.validator ? \"string\" == typeof l.validator ? new RegExp(l.validator, i.casing ? \"i\" : \"\") : new function() {\n this.test = l.validator;\n } : new RegExp(\".\"),\n static: l.static || !1,\n optionality: l.optional || !1,\n defOptionality: l.optional || !1,\n newBlockMarker: void 0 === o || l.optional ? \"master\" : o.def !== (l.definitionSymbol || n),\n casing: l.casing,\n def: l.definitionSymbol || n,\n placeholder: l.placeholder,\n nativeDef: n,\n generated: l.generated\n }) : (e.matches.splice(a++, 0, {\n fn: /[a-z]/i.test(i.staticDefinitionSymbol || n) ? new RegExp(\"[\" + (i.staticDefinitionSymbol || n) + \"]\", i.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === o ? \"master\" : o.def !== n && !0 !== o.static,\n casing: null,\n def: i.staticDefinitionSymbol || n,\n placeholder: void 0 !== i.staticDefinitionSymbol ? n : void 0,\n nativeDef: (p ? \"'\" : \"\") + n\n }), p = !1);\n }\n }\n function k() {\n if (v.length > 0) {\n if (y(l = v[v.length - 1], o), l.isAlternator) {\n c = v.pop();\n for (var e = 0; e < c.matches.length; e++) c.matches[e].isGroup && (c.matches[e].isGroup = !1);\n v.length > 0 ? (l = v[v.length - 1]).matches.push(c) : h.matches.push(c);\n }\n } else y(h, o);\n }\n function b(e) {\n var t = new a.default(!0);\n return t.openGroup = !1, t.matches = e, t;\n }\n function x() {\n if ((s = v.pop()).openGroup = !1, void 0 !== s) if (v.length > 0) {\n if ((l = v[v.length - 1]).matches.push(s), l.isAlternator) {\n for (var e = (c = v.pop()).matches[0].matches ? c.matches[0].matches.length : 1, t = 0; t < c.matches.length; t++) c.matches[t].isGroup = !1, \n c.matches[t].alternatorGroup = !1, null === i.keepStatic && e < (c.matches[t].matches ? c.matches[t].matches.length : 1) && (i.keepStatic = !0), \n e = c.matches[t].matches ? c.matches[t].matches.length : 1;\n v.length > 0 ? (l = v[v.length - 1]).matches.push(c) : h.matches.push(c);\n }\n } else h.matches.push(s); else k();\n }\n function P(e) {\n var t = e.pop();\n return t.isQuantifier && (t = b([ e.pop(), t ])), t;\n }\n t && (i.optionalmarker[0] = void 0, i.optionalmarker[1] = void 0);\n for (;n = t ? d.exec(e) : f.exec(e); ) {\n if (o = n[0], t) {\n switch (o.charAt(0)) {\n case \"?\":\n o = \"{0,1}\";\n break;\n\n case \"+\":\n case \"*\":\n o = \"{\" + o + \"}\";\n break;\n\n case \"|\":\n if (0 === v.length) {\n var w = b(h.matches);\n w.openGroup = !0, v.push(w), h.matches = [], g = !0;\n }\n }\n switch (o) {\n case \"\\\\d\":\n o = \"[0-9]\";\n break;\n\n case \"\\\\p\":\n o += d.exec(e)[0], o += d.exec(e)[0];\n }\n }\n if (p) k(); else switch (o.charAt(0)) {\n case \"$\":\n case \"^\":\n t || k();\n break;\n\n case i.escapeChar:\n p = !0, t && k();\n break;\n\n case i.optionalmarker[1]:\n case i.groupmarker[1]:\n x();\n break;\n\n case i.optionalmarker[0]:\n v.push(new a.default(!1, !0));\n break;\n\n case i.groupmarker[0]:\n v.push(new a.default(!0));\n break;\n\n case i.quantifiermarker[0]:\n var S = new a.default(!1, !1, !0), M = (o = o.replace(/[{}?]/g, \"\")).split(\"|\"), _ = M[0].split(\",\"), O = isNaN(_[0]) ? _[0] : parseInt(_[0]), E = 1 === _.length ? O : isNaN(_[1]) ? _[1] : parseInt(_[1]), T = isNaN(M[1]) ? M[1] : parseInt(M[1]);\n \"*\" !== O && \"+\" !== O || (O = \"*\" === E ? 0 : 1), S.quantifier = {\n min: O,\n max: E,\n jit: T\n };\n var j = v.length > 0 ? v[v.length - 1].matches : h.matches;\n (n = j.pop()).isGroup || (n = b([ n ])), j.push(n), j.push(S);\n break;\n\n case i.alternatormarker:\n if (v.length > 0) {\n var A = (l = v[v.length - 1]).matches[l.matches.length - 1];\n u = l.openGroup && (void 0 === A.matches || !1 === A.isGroup && !1 === A.isAlternator) ? v.pop() : P(l.matches);\n } else u = P(h.matches);\n if (u.isAlternator) v.push(u); else if (u.alternatorGroup ? (c = v.pop(), u.alternatorGroup = !1) : c = new a.default(!1, !1, !1, !0), \n c.matches.push(u), v.push(c), u.openGroup) {\n u.openGroup = !1;\n var D = new a.default(!0);\n D.alternatorGroup = !0, v.push(D);\n }\n break;\n\n default:\n k();\n }\n }\n g && x();\n for (;v.length > 0; ) s = v.pop(), h.matches.push(s);\n h.matches.length > 0 && (!function e(n) {\n n && n.matches && n.matches.forEach((function(a, r) {\n var o = n.matches[r + 1];\n (void 0 === o || void 0 === o.matches || !1 === o.isQuantifier) && a && a.isGroup && (a.isGroup = !1, \n t || (y(a, i.groupmarker[0], 0), !0 !== a.openGroup && y(a, i.groupmarker[1]))), \n e(a);\n }));\n }(h), m.push(h));\n (i.numericInput || i.isRTL) && function e(t) {\n for (var n in t.matches = t.matches.reverse(), t.matches) if (Object.prototype.hasOwnProperty.call(t.matches, n)) {\n var a = parseInt(n);\n if (t.matches[n].isQuantifier && t.matches[a + 1] && t.matches[a + 1].isGroup) {\n var r = t.matches[n];\n t.matches.splice(n, 1), t.matches.splice(a + 1, 0, r);\n }\n void 0 !== t.matches[n].matches ? t.matches[n] = e(t.matches[n]) : t.matches[n] = ((o = t.matches[n]) === i.optionalmarker[0] ? o = i.optionalmarker[1] : o === i.optionalmarker[1] ? o = i.optionalmarker[0] : o === i.groupmarker[0] ? o = i.groupmarker[1] : o === i.groupmarker[1] && (o = i.groupmarker[0]), \n o);\n }\n var o;\n return t;\n }(m[0]);\n return m;\n }, t.generateMaskSet = function(e, t) {\n var i;\n function a(e, t) {\n var i = t.repeat, n = t.groupmarker, a = t.quantifiermarker, r = t.keepStatic;\n if (i > 0 || \"*\" === i || \"+\" === i) {\n var l = \"*\" === i ? 0 : \"+\" === i ? 1 : i;\n e = n[0] + e + n[1] + a[0] + l + \",\" + i + a[1];\n }\n if (!0 === r) {\n var c = e.match(new RegExp(\"(.)\\\\[([^\\\\]]*)\\\\]\", \"g\"));\n c && c.forEach((function(t, i) {\n var n = function(e, t) {\n return function(e) {\n if (Array.isArray(e)) return e;\n }(e) || function(e, t) {\n var i = null == e ? null : \"undefined\" != typeof Symbol && e[Symbol.iterator] || e[\"@@iterator\"];\n if (null != i) {\n var n, a, r, o, s = [], l = !0, c = !1;\n try {\n if (r = (i = i.call(e)).next, 0 === t) {\n if (Object(i) !== i) return;\n l = !1;\n } else for (;!(l = (n = r.call(i)).done) && (s.push(n.value), s.length !== t); l = !0) ;\n } catch (e) {\n c = !0, a = e;\n } finally {\n try {\n if (!l && null != i.return && (o = i.return(), Object(o) !== o)) return;\n } finally {\n if (c) throw a;\n }\n }\n return s;\n }\n }(e, t) || function(e, t) {\n if (!e) return;\n if (\"string\" == typeof e) return s(e, t);\n var i = Object.prototype.toString.call(e).slice(8, -1);\n \"Object\" === i && e.constructor && (i = e.constructor.name);\n if (\"Map\" === i || \"Set\" === i) return Array.from(e);\n if (\"Arguments\" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return s(e, t);\n }(e, t) || function() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }(t.split(\"[\"), 2), a = n[0], r = n[1];\n r = r.replace(\"]\", \"\"), e = e.replace(new RegExp(\"\".concat((0, o.default)(a), \"\\\\[\").concat((0, \n o.default)(r), \"\\\\]\")), a.charAt(0) === r.charAt(0) ? \"(\".concat(a, \"|\").concat(a).concat(r, \")\") : \"\".concat(a, \"[\").concat(r, \"]\"));\n }));\n }\n return e;\n }\n function l(e, i, o) {\n var s, l, c = !1;\n return null !== e && \"\" !== e || ((c = null !== o.regex) ? e = (e = o.regex).replace(/^(\\^)(.*)(\\$)$/, \"$2\") : (c = !0, \n e = \".*\")), 1 === e.length && !1 === o.greedy && 0 !== o.repeat && (o.placeholder = \"\"), \n e = a(e, o), l = c ? \"regex_\" + o.regex : o.numericInput ? e.split(\"\").reverse().join(\"\") : e, \n null !== o.keepStatic && (l = \"ks_\" + o.keepStatic + l), void 0 === r.default.prototype.masksCache[l] || !0 === t ? (s = {\n mask: e,\n maskToken: r.default.prototype.analyseMask(e, c, o),\n validPositions: [],\n _buffer: void 0,\n buffer: void 0,\n tests: {},\n excludes: {},\n metadata: i,\n maskLength: void 0,\n jitOffset: {}\n }, !0 !== t && (r.default.prototype.masksCache[l] = s, s = n.default.extend(!0, {}, r.default.prototype.masksCache[l]))) : s = n.default.extend(!0, {}, r.default.prototype.masksCache[l]), \n s;\n }\n \"function\" == typeof e.mask && (e.mask = e.mask(e));\n if (Array.isArray(e.mask)) {\n if (e.mask.length > 1) {\n null === e.keepStatic && (e.keepStatic = !0);\n var c = e.groupmarker[0];\n return (e.isRTL ? e.mask.reverse() : e.mask).forEach((function(t) {\n c.length > 1 && (c += e.alternatormarker), void 0 !== t.mask && \"function\" != typeof t.mask ? c += t.mask : c += t;\n })), l(c += e.groupmarker[1], e.mask, e);\n }\n e.mask = e.mask.pop();\n }\n i = e.mask && void 0 !== e.mask.mask && \"function\" != typeof e.mask.mask ? l(e.mask.mask, e.mask, e) : l(e.mask, e.mask, e);\n null === e.keepStatic && (e.keepStatic = !1);\n return i;\n };\n var n = l(i(4963)), a = l(i(9695)), r = l(i(2394)), o = l(i(7184));\n function s(e, t) {\n (null == t || t > e.length) && (t = e.length);\n for (var i = 0, n = new Array(t); i < t; i++) n[i] = e[i];\n return n;\n }\n function l(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n }\n },\n 157: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.mask = function() {\n var e = this, t = this.opts, i = this.el, u = this.dependencyLib;\n o.EventRuler.off(i);\n var f = function(t, i) {\n \"textarea\" !== t.tagName.toLowerCase() && i.ignorables.push(n.keys.Enter);\n var s = t.getAttribute(\"type\"), l = \"input\" === t.tagName.toLowerCase() && i.supportsInputType.includes(s) || t.isContentEditable || \"textarea\" === t.tagName.toLowerCase();\n if (!l) if (\"input\" === t.tagName.toLowerCase()) {\n var c = document.createElement(\"input\");\n c.setAttribute(\"type\", s), l = \"text\" === c.type, c = null;\n } else l = \"partial\";\n return !1 !== l ? function(t) {\n var n, s;\n function l() {\n return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== a.getLastValidPosition.call(e) || !0 !== i.nullable ? (this.inputmask.shadowRoot || this.ownerDocument).activeElement === this && i.clearMaskOnLostFocus ? (e.isRTL ? r.clearOptionalTail.call(e, a.getBuffer.call(e).slice()).reverse() : r.clearOptionalTail.call(e, a.getBuffer.call(e).slice())).join(\"\") : n.call(this) : \"\" : n.call(this);\n }\n function c(e) {\n s.call(this, e), this.inputmask && (0, r.applyInputValue)(this, e);\n }\n if (!t.inputmask.__valueGet) {\n if (!0 !== i.noValuePatching) {\n if (Object.getOwnPropertyDescriptor) {\n var f = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(t), \"value\") : void 0;\n f && f.get && f.set ? (n = f.get, s = f.set, Object.defineProperty(t, \"value\", {\n get: l,\n set: c,\n configurable: !0\n })) : \"input\" !== t.tagName.toLowerCase() && (n = function() {\n return this.textContent;\n }, s = function(e) {\n this.textContent = e;\n }, Object.defineProperty(t, \"value\", {\n get: l,\n set: c,\n configurable: !0\n }));\n } else document.__lookupGetter__ && t.__lookupGetter__(\"value\") && (n = t.__lookupGetter__(\"value\"), \n s = t.__lookupSetter__(\"value\"), t.__defineGetter__(\"value\", l), t.__defineSetter__(\"value\", c));\n t.inputmask.__valueGet = n, t.inputmask.__valueSet = s;\n }\n t.inputmask._valueGet = function(t) {\n return e.isRTL && !0 !== t ? n.call(this.el).split(\"\").reverse().join(\"\") : n.call(this.el);\n }, t.inputmask._valueSet = function(t, i) {\n s.call(this.el, null == t ? \"\" : !0 !== i && e.isRTL ? t.split(\"\").reverse().join(\"\") : t);\n }, void 0 === n && (n = function() {\n return this.value;\n }, s = function(e) {\n this.value = e;\n }, function(t) {\n if (u.valHooks && (void 0 === u.valHooks[t] || !0 !== u.valHooks[t].inputmaskpatch)) {\n var n = u.valHooks[t] && u.valHooks[t].get ? u.valHooks[t].get : function(e) {\n return e.value;\n }, o = u.valHooks[t] && u.valHooks[t].set ? u.valHooks[t].set : function(e, t) {\n return e.value = t, e;\n };\n u.valHooks[t] = {\n get: function(t) {\n if (t.inputmask) {\n if (t.inputmask.opts.autoUnmask) return t.inputmask.unmaskedvalue();\n var r = n(t);\n return -1 !== a.getLastValidPosition.call(e, void 0, void 0, t.inputmask.maskset.validPositions) || !0 !== i.nullable ? r : \"\";\n }\n return n(t);\n },\n set: function(e, t) {\n var i = o(e, t);\n return e.inputmask && (0, r.applyInputValue)(e, t), i;\n },\n inputmaskpatch: !0\n };\n }\n }(t.type), function(e) {\n o.EventRuler.on(e, \"mouseenter\", (function() {\n var e = this, t = e.inputmask._valueGet(!0);\n t != (e.inputmask.isRTL ? a.getBuffer.call(e.inputmask).slice().reverse() : a.getBuffer.call(e.inputmask)).join(\"\") && (0, \n r.applyInputValue)(e, t);\n }));\n }(t));\n }\n }(t) : t.inputmask = void 0, l;\n }(i, t);\n if (!1 !== f) {\n e.originalPlaceholder = i.placeholder, e.maxLength = void 0 !== i ? i.maxLength : void 0, \n -1 === e.maxLength && (e.maxLength = void 0), \"inputMode\" in i && null === i.getAttribute(\"inputmode\") && (i.inputMode = t.inputmode, \n i.setAttribute(\"inputmode\", t.inputmode)), !0 === f && (t.showMaskOnFocus = t.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(i.autocomplete), \n s.iphone && (t.insertModeVisual = !1, i.setAttribute(\"autocorrect\", \"off\")), o.EventRuler.on(i, \"submit\", c.EventHandlers.submitEvent), \n o.EventRuler.on(i, \"reset\", c.EventHandlers.resetEvent), o.EventRuler.on(i, \"blur\", c.EventHandlers.blurEvent), \n o.EventRuler.on(i, \"focus\", c.EventHandlers.focusEvent), o.EventRuler.on(i, \"invalid\", c.EventHandlers.invalidEvent), \n o.EventRuler.on(i, \"click\", c.EventHandlers.clickEvent), o.EventRuler.on(i, \"mouseleave\", c.EventHandlers.mouseleaveEvent), \n o.EventRuler.on(i, \"mouseenter\", c.EventHandlers.mouseenterEvent), o.EventRuler.on(i, \"paste\", c.EventHandlers.pasteEvent), \n o.EventRuler.on(i, \"cut\", c.EventHandlers.cutEvent), o.EventRuler.on(i, \"complete\", t.oncomplete), \n o.EventRuler.on(i, \"incomplete\", t.onincomplete), o.EventRuler.on(i, \"cleared\", t.oncleared), \n !0 !== t.inputEventOnly && o.EventRuler.on(i, \"keydown\", c.EventHandlers.keyEvent), \n (s.mobile || t.inputEventOnly) && i.removeAttribute(\"maxLength\"), o.EventRuler.on(i, \"input\", c.EventHandlers.inputFallBackEvent)), \n o.EventRuler.on(i, \"setvalue\", c.EventHandlers.setValueEvent), a.getBufferTemplate.call(e).join(\"\"), \n e.undoValue = e._valueGet(!0);\n var d = (i.inputmask.shadowRoot || i.ownerDocument).activeElement;\n if (\"\" !== i.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || d === i) {\n (0, r.applyInputValue)(i, i.inputmask._valueGet(!0), t);\n var p = a.getBuffer.call(e).slice();\n !1 === l.isComplete.call(e, p) && t.clearIncomplete && a.resetMaskSet.call(e), t.clearMaskOnLostFocus && d !== i && (-1 === a.getLastValidPosition.call(e) ? p = [] : r.clearOptionalTail.call(e, p)), \n (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && d === i || \"\" !== i.inputmask._valueGet(!0)) && (0, \n r.writeBuffer)(i, p), d === i && a.caret.call(e, i, a.seekNext.call(e, a.getLastValidPosition.call(e)));\n }\n }\n };\n var n = i(2839), a = i(8711), r = i(7760), o = i(9716), s = i(9845), l = i(7215), c = i(6030);\n },\n 9695: function(e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = function(e, t, i, n) {\n this.matches = [], this.openGroup = e || !1, this.alternatorGroup = !1, this.isGroup = e || !1, \n this.isOptional = t || !1, this.isQuantifier = i || !1, this.isAlternator = n || !1, \n this.quantifier = {\n min: 1,\n max: 1\n };\n };\n },\n 3194: function() {\n Array.prototype.includes || Object.defineProperty(Array.prototype, \"includes\", {\n value: function(e, t) {\n if (null == this) throw new TypeError('\"this\" is null or not defined');\n var i = Object(this), n = i.length >>> 0;\n if (0 === n) return !1;\n for (var a = 0 | t, r = Math.max(a >= 0 ? a : n - Math.abs(a), 0); r < n; ) {\n if (i[r] === e) return !0;\n r++;\n }\n return !1;\n }\n });\n },\n 9302: function() {\n var e = Function.bind.call(Function.call, Array.prototype.reduce), t = Function.bind.call(Function.call, Object.prototype.propertyIsEnumerable), i = Function.bind.call(Function.call, Array.prototype.concat), n = Object.keys;\n Object.entries || (Object.entries = function(a) {\n return e(n(a), (function(e, n) {\n return i(e, \"string\" == typeof n && t(a, n) ? [ [ n, a[n] ] ] : []);\n }), []);\n });\n },\n 7149: function() {\n function e(t) {\n return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(e) {\n return typeof e;\n } : function(e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n }, e(t);\n }\n \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === e(\"test\".__proto__) ? function(e) {\n return e.__proto__;\n } : function(e) {\n return e.constructor.prototype;\n });\n },\n 4013: function() {\n String.prototype.includes || (String.prototype.includes = function(e, t) {\n return \"number\" != typeof t && (t = 0), !(t + e.length > this.length) && -1 !== this.indexOf(e, t);\n });\n },\n 8711: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.caret = function(e, t, i, n, a) {\n var r, o = this, s = this.opts;\n if (void 0 === t) return \"selectionStart\" in e && \"selectionEnd\" in e ? (t = e.selectionStart, \n i = e.selectionEnd) : window.getSelection ? (r = window.getSelection().getRangeAt(0)).commonAncestorContainer.parentNode !== e && r.commonAncestorContainer !== e || (t = r.startOffset, \n i = r.endOffset) : document.selection && document.selection.createRange && (i = (t = 0 - (r = document.selection.createRange()).duplicate().moveStart(\"character\", -e.inputmask._valueGet().length)) + r.text.length), \n {\n begin: n ? t : c.call(o, t),\n end: n ? i : c.call(o, i)\n };\n if (Array.isArray(t) && (i = o.isRTL ? t[0] : t[1], t = o.isRTL ? t[1] : t[0]), \n void 0 !== t.begin && (i = o.isRTL ? t.begin : t.end, t = o.isRTL ? t.end : t.begin), \n \"number\" == typeof t) {\n t = n ? t : c.call(o, t), i = \"number\" == typeof (i = n ? i : c.call(o, i)) ? i : t;\n var l = parseInt(((e.ownerDocument.defaultView || window).getComputedStyle ? (e.ownerDocument.defaultView || window).getComputedStyle(e, null) : e.currentStyle).fontSize) * i;\n if (e.scrollLeft = l > e.scrollWidth ? l : 0, e.inputmask.caretPos = {\n begin: t,\n end: i\n }, s.insertModeVisual && !1 === s.insertMode && t === i && (a || i++), e === (e.inputmask.shadowRoot || e.ownerDocument).activeElement) if (\"setSelectionRange\" in e) e.setSelectionRange(t, i); else if (window.getSelection) {\n if (r = document.createRange(), void 0 === e.firstChild || null === e.firstChild) {\n var u = document.createTextNode(\"\");\n e.appendChild(u);\n }\n r.setStart(e.firstChild, t < e.inputmask._valueGet().length ? t : e.inputmask._valueGet().length), \n r.setEnd(e.firstChild, i < e.inputmask._valueGet().length ? i : e.inputmask._valueGet().length), \n r.collapse(!0);\n var f = window.getSelection();\n f.removeAllRanges(), f.addRange(r);\n } else e.createTextRange && ((r = e.createTextRange()).collapse(!0), r.moveEnd(\"character\", i), \n r.moveStart(\"character\", t), r.select());\n }\n }, t.determineLastRequiredPosition = function(e) {\n var t, i, r = this, s = r.maskset, l = r.dependencyLib, c = n.getMaskTemplate.call(r, !0, o.call(r), !0, !0), u = c.length, f = o.call(r), d = {}, p = s.validPositions[f], h = void 0 !== p ? p.locator.slice() : void 0;\n for (t = f + 1; t < c.length; t++) h = (i = n.getTestTemplate.call(r, t, h, t - 1)).locator.slice(), \n d[t] = l.extend(!0, {}, i);\n var v = p && void 0 !== p.alternation ? p.locator[p.alternation] : void 0;\n for (t = u - 1; t > f && (((i = d[t]).match.optionality || i.match.optionalQuantifier && i.match.newBlockMarker || v && (v !== d[t].locator[p.alternation] && 1 != i.match.static || !0 === i.match.static && i.locator[p.alternation] && a.checkAlternationMatch.call(r, i.locator[p.alternation].toString().split(\",\"), v.toString().split(\",\")) && \"\" !== n.getTests.call(r, t)[0].def)) && c[t] === n.getPlaceholder.call(r, t, i.match)); t--) u--;\n return e ? {\n l: u,\n def: d[u] ? d[u].match : void 0\n } : u;\n }, t.determineNewCaretPosition = function(e, t, i) {\n var a = this, c = a.maskset, u = a.opts;\n t && (a.isRTL ? e.end = e.begin : e.begin = e.end);\n if (e.begin === e.end) {\n switch (i = i || u.positionCaretOnClick) {\n case \"none\":\n break;\n\n case \"select\":\n e = {\n begin: 0,\n end: r.call(a).length\n };\n break;\n\n case \"ignore\":\n e.end = e.begin = l.call(a, o.call(a));\n break;\n\n case \"radixFocus\":\n if (a.clicked > 1 && 0 == c.validPositions.length) break;\n if (function(e) {\n if (\"\" !== u.radixPoint && 0 !== u.digits) {\n var t = c.validPositions;\n if (void 0 === t[e] || t[e].input === n.getPlaceholder.call(a, e)) {\n if (e < l.call(a, -1)) return !0;\n var i = r.call(a).indexOf(u.radixPoint);\n if (-1 !== i) {\n for (var o = 0, s = t.length; o < s; o++) if (t[o] && i < o && t[o].input !== n.getPlaceholder.call(a, o)) return !1;\n return !0;\n }\n }\n }\n return !1;\n }(e.begin)) {\n var f = r.call(a).join(\"\").indexOf(u.radixPoint);\n e.end = e.begin = u.numericInput ? l.call(a, f) : f;\n break;\n }\n\n default:\n var d = e.begin, p = o.call(a, d, !0), h = l.call(a, -1 !== p || s.call(a, 0) ? p : -1);\n if (d <= h) e.end = e.begin = s.call(a, d, !1, !0) ? d : l.call(a, d); else {\n var v = c.validPositions[p], m = n.getTestTemplate.call(a, h, v ? v.match.locator : void 0, v), g = n.getPlaceholder.call(a, h, m.match);\n if (\"\" !== g && r.call(a)[h] !== g && !0 !== m.match.optionalQuantifier && !0 !== m.match.newBlockMarker || !s.call(a, h, u.keepStatic, !0) && m.match.def === g) {\n var y = l.call(a, h);\n (d >= y || d === h) && (h = y);\n }\n e.end = e.begin = h;\n }\n }\n return e;\n }\n }, t.getBuffer = r, t.getBufferTemplate = function() {\n var e = this.maskset;\n void 0 === e._buffer && (e._buffer = n.getMaskTemplate.call(this, !1, 1), void 0 === e.buffer && (e.buffer = e._buffer.slice()));\n return e._buffer;\n }, t.getLastValidPosition = o, t.isMask = s, t.resetMaskSet = function(e) {\n var t = this.maskset;\n t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);\n }, t.seekNext = l, t.seekPrevious = function(e, t) {\n var i = this, a = e - 1;\n if (e <= 0) return 0;\n for (;a > 0 && (!0 === t && (!0 !== n.getTest.call(i, a).match.newBlockMarker || !s.call(i, a, void 0, !0)) || !0 !== t && !s.call(i, a, void 0, !0)); ) a--;\n return a;\n }, t.translatePosition = c;\n var n = i(4713), a = i(7215);\n function r(e) {\n var t = this, i = t.maskset;\n return void 0 !== i.buffer && !0 !== e || (i.buffer = n.getMaskTemplate.call(t, !0, o.call(t), !0), \n void 0 === i._buffer && (i._buffer = i.buffer.slice())), i.buffer;\n }\n function o(e, t, i) {\n var n = this.maskset, a = -1, r = -1, o = i || n.validPositions;\n void 0 === e && (e = -1);\n for (var s = 0, l = o.length; s < l; s++) o[s] && (t || !0 !== o[s].generatedInput) && (s <= e && (a = s), \n s >= e && (r = s));\n return -1 === a || a == e ? r : -1 == r || e - a < r - e ? a : r;\n }\n function s(e, t, i) {\n var a = this, r = this.maskset, o = n.getTestTemplate.call(a, e).match;\n if (\"\" === o.def && (o = n.getTest.call(a, e).match), !0 !== o.static) return o.fn;\n if (!0 === i && void 0 !== r.validPositions[e] && !0 !== r.validPositions[e].generatedInput) return !0;\n if (!0 !== t && e > -1) {\n if (i) {\n var s = n.getTests.call(a, e);\n return s.length > 1 + (\"\" === s[s.length - 1].match.def ? 1 : 0);\n }\n var l = n.determineTestTemplate.call(a, e, n.getTests.call(a, e)), c = n.getPlaceholder.call(a, e, l.match);\n return l.match.def !== c;\n }\n return !1;\n }\n function l(e, t, i) {\n var a = this;\n void 0 === i && (i = !0);\n for (var r = e + 1; \"\" !== n.getTest.call(a, r).match.def && (!0 === t && (!0 !== n.getTest.call(a, r).match.newBlockMarker || !s.call(a, r, void 0, !0)) || !0 !== t && !s.call(a, r, void 0, i)); ) r++;\n return r;\n }\n function c(e) {\n var t = this.opts, i = this.el;\n return !this.isRTL || \"number\" != typeof e || t.greedy && \"\" === t.placeholder || !i || (e = this._valueGet().length - e) < 0 && (e = 0), \n e;\n }\n },\n 4713: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.determineTestTemplate = c, t.getDecisionTaker = o, t.getMaskTemplate = function(e, t, i, n, a) {\n var r = this, o = this.opts, u = this.maskset, f = o.greedy;\n a && o.greedy && (o.greedy = !1, r.maskset.tests = {});\n t = t || 0;\n var p, h, v, m, g = [], y = 0;\n do {\n if (!0 === e && u.validPositions[y]) h = (v = a && u.validPositions[y].match.optionality && void 0 === u.validPositions[y + 1] && (!0 === u.validPositions[y].generatedInput || u.validPositions[y].input == o.skipOptionalPartCharacter && y > 0) ? c.call(r, y, d.call(r, y, p, y - 1)) : u.validPositions[y]).match, \n p = v.locator.slice(), g.push(!0 === i ? v.input : !1 === i ? h.nativeDef : s.call(r, y, h)); else {\n h = (v = l.call(r, y, p, y - 1)).match, p = v.locator.slice();\n var k = !0 !== n && (!1 !== o.jitMasking ? o.jitMasking : h.jit);\n (m = (m && h.static && h.def !== o.groupSeparator && null === h.fn || u.validPositions[y - 1] && h.static && h.def !== o.groupSeparator && null === h.fn) && u.tests[y]) || !1 === k || void 0 === k || \"number\" == typeof k && isFinite(k) && k > y ? g.push(!1 === i ? h.nativeDef : s.call(r, g.length, h)) : m = !1;\n }\n y++;\n } while (!0 !== h.static || \"\" !== h.def || t > y);\n \"\" === g[g.length - 1] && g.pop();\n !1 === i && void 0 !== u.maskLength || (u.maskLength = y - 1);\n return o.greedy = f, g;\n }, t.getPlaceholder = s, t.getTest = u, t.getTestTemplate = l, t.getTests = d, t.isSubsetOf = f;\n var n, a = (n = i(2394)) && n.__esModule ? n : {\n default: n\n };\n function r(e, t) {\n var i = (null != e.alternation ? e.mloc[o(e)] : e.locator).join(\"\");\n if (\"\" !== i) for (;i.length < t; ) i += \"0\";\n return i;\n }\n function o(e) {\n var t = e.locator[e.alternation];\n return \"string\" == typeof t && t.length > 0 && (t = t.split(\",\")[0]), void 0 !== t ? t.toString() : \"\";\n }\n function s(e, t, i) {\n var n = this.opts, a = this.maskset;\n if (void 0 !== (t = t || u.call(this, e).match).placeholder || !0 === i) return \"function\" == typeof t.placeholder ? t.placeholder(n) : t.placeholder;\n if (!0 === t.static) {\n if (e > -1 && void 0 === a.validPositions[e]) {\n var r, o = d.call(this, e), s = [];\n if (o.length > 1 + (\"\" === o[o.length - 1].match.def ? 1 : 0)) for (var l = 0; l < o.length; l++) if (\"\" !== o[l].match.def && !0 !== o[l].match.optionality && !0 !== o[l].match.optionalQuantifier && (!0 === o[l].match.static || void 0 === r || !1 !== o[l].match.fn.test(r.match.def, a, e, !0, n)) && (s.push(o[l]), \n !0 === o[l].match.static && (r = o[l]), s.length > 1 && /[0-9a-bA-Z]/.test(s[0].match.def))) return n.placeholder.charAt(e % n.placeholder.length);\n }\n return t.def;\n }\n return n.placeholder.charAt(e % n.placeholder.length);\n }\n function l(e, t, i) {\n return this.maskset.validPositions[e] || c.call(this, e, d.call(this, e, t ? t.slice() : t, i));\n }\n function c(e, t) {\n var i = this.opts, n = 0, a = function(e, t) {\n var i = 0, n = !1;\n t.forEach((function(e) {\n e.match.optionality && (0 !== i && i !== e.match.optionality && (n = !0), (0 === i || i > e.match.optionality) && (i = e.match.optionality));\n })), i && (0 == e || 1 == t.length ? i = 0 : n || (i = 0));\n return i;\n }(e, t);\n e = e > 0 ? e - 1 : 0;\n var o, s, l, c = r(u.call(this, e));\n i.greedy && t.length > 1 && \"\" === t[t.length - 1].match.def && (n = 1);\n for (var f = 0; f < t.length - n; f++) {\n var d = t[f];\n o = r(d, c.length);\n var p = Math.abs(o - c);\n (void 0 === s || \"\" !== o && p < s || l && !i.greedy && l.match.optionality && l.match.optionality - a > 0 && \"master\" === l.match.newBlockMarker && (!d.match.optionality || d.match.optionality - a < 1 || !d.match.newBlockMarker) || l && !i.greedy && l.match.optionalQuantifier && !d.match.optionalQuantifier) && (s = p, \n l = d);\n }\n return l;\n }\n function u(e, t) {\n var i = this.maskset;\n return i.validPositions[e] ? i.validPositions[e] : (t || d.call(this, e))[0];\n }\n function f(e, t, i) {\n function n(e) {\n for (var t, i = [], n = -1, a = 0, r = e.length; a < r; a++) if (\"-\" === e.charAt(a)) for (t = e.charCodeAt(a + 1); ++n < t; ) i.push(String.fromCharCode(n)); else n = e.charCodeAt(a), \n i.push(e.charAt(a));\n return i.join(\"\");\n }\n return e.match.def === t.match.nativeDef || !(!(i.regex || e.match.fn instanceof RegExp && t.match.fn instanceof RegExp) || !0 === e.match.static || !0 === t.match.static) && -1 !== n(t.match.fn.toString().replace(/[[\\]/]/g, \"\")).indexOf(n(e.match.fn.toString().replace(/[[\\]/]/g, \"\")));\n }\n function d(e, t, i) {\n var n, r, o = this, s = this.dependencyLib, l = this.maskset, u = this.opts, d = this.el, p = l.maskToken, h = t ? i : 0, v = t ? t.slice() : [ 0 ], m = [], g = !1, y = t ? t.join(\"\") : \"\";\n function k(t, i, r, s) {\n function c(r, s, p) {\n function v(e, t) {\n var i = 0 === t.matches.indexOf(e);\n return i || t.matches.every((function(n, a) {\n return !0 === n.isQuantifier ? i = v(e, t.matches[a - 1]) : Object.prototype.hasOwnProperty.call(n, \"matches\") && (i = v(e, n)), \n !i;\n })), i;\n }\n function x(e, t, i) {\n var n, a;\n if ((l.tests[e] || l.validPositions[e]) && (l.tests[e] || [ l.validPositions[e] ]).every((function(e, r) {\n if (e.mloc[t]) return n = e, !1;\n var o = void 0 !== i ? i : e.alternation, s = void 0 !== e.locator[o] ? e.locator[o].toString().indexOf(t) : -1;\n return (void 0 === a || s < a) && -1 !== s && (n = e, a = s), !0;\n })), n) {\n var r = n.locator[n.alternation];\n return (n.mloc[t] || n.mloc[r] || n.locator).slice((void 0 !== i ? i : n.alternation) + 1);\n }\n return void 0 !== i ? x(e, t) : void 0;\n }\n function P(e, t) {\n var i = e.alternation, n = void 0 === t || i === t.alternation && -1 === e.locator[i].toString().indexOf(t.locator[i]);\n if (!n && i > t.alternation) for (var a = t.alternation; a < i; a++) if (e.locator[a] !== t.locator[a]) {\n i = a, n = !0;\n break;\n }\n if (n) {\n e.mloc = e.mloc || {};\n var r = e.locator[i];\n if (void 0 !== r) {\n if (\"string\" == typeof r && (r = r.split(\",\")[0]), void 0 === e.mloc[r] && (e.mloc[r] = e.locator.slice()), \n void 0 !== t) {\n for (var o in t.mloc) \"string\" == typeof o && (o = o.split(\",\")[0]), void 0 === e.mloc[o] && (e.mloc[o] = t.mloc[o]);\n e.locator[i] = Object.keys(e.mloc).join(\",\");\n }\n return !0;\n }\n e.alternation = void 0;\n }\n return !1;\n }\n function w(e, t) {\n if (e.locator.length !== t.locator.length) return !1;\n for (var i = e.alternation + 1; i < e.locator.length; i++) if (e.locator[i] !== t.locator[i]) return !1;\n return !0;\n }\n if (h > e + u._maxTestPos) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + l.mask;\n if (h === e && void 0 === r.matches) {\n if (m.push({\n match: r,\n locator: s.reverse(),\n cd: y,\n mloc: {}\n }), !r.optionality || void 0 !== p || !(u.definitions && u.definitions[r.nativeDef] && u.definitions[r.nativeDef].optional || a.default.prototype.definitions[r.nativeDef] && a.default.prototype.definitions[r.nativeDef].optional)) return !0;\n g = !0, h = e;\n } else if (void 0 !== r.matches) {\n if (r.isGroup && p !== r) return function() {\n if (r = c(t.matches[t.matches.indexOf(r) + 1], s, p)) return !0;\n }();\n if (r.isOptional) return function() {\n var t = r, a = m.length;\n if (r = k(r, i, s, p), m.length > 0) {\n if (m.forEach((function(e, t) {\n t >= a && (e.match.optionality = e.match.optionality ? e.match.optionality + 1 : 1);\n })), n = m[m.length - 1].match, void 0 !== p || !v(n, t)) return r;\n g = !0, h = e;\n }\n }();\n if (r.isAlternator) return function() {\n o.hasAlternator = !0;\n var n, a, v, y = r, k = [], b = m.slice(), S = s.length, M = !1, _ = i.length > 0 ? i.shift() : -1;\n if (-1 === _ || \"string\" == typeof _) {\n var O, E = h, T = i.slice(), j = [];\n if (\"string\" == typeof _) j = _.split(\",\"); else for (O = 0; O < y.matches.length; O++) j.push(O.toString());\n if (void 0 !== l.excludes[e]) {\n for (var A = j.slice(), D = 0, B = l.excludes[e].length; D < B; D++) {\n var C = l.excludes[e][D].toString().split(\":\");\n s.length == C[1] && j.splice(j.indexOf(C[0]), 1);\n }\n 0 === j.length && (delete l.excludes[e], j = A);\n }\n (!0 === u.keepStatic || isFinite(parseInt(u.keepStatic)) && E >= u.keepStatic) && (j = j.slice(0, 1));\n for (var R = 0; R < j.length; R++) {\n O = parseInt(j[R]), m = [], i = \"string\" == typeof _ && x(h, O, S) || T.slice();\n var L = y.matches[O];\n if (L && c(L, [ O ].concat(s), p)) r = !0; else if (0 === R && (M = !0), L && L.matches && L.matches.length > y.matches[0].matches.length) break;\n n = m.slice(), h = E, m = [];\n for (var F = 0; F < n.length; F++) {\n var I = n[F], N = !1;\n I.match.jit = I.match.jit || M, I.alternation = I.alternation || S, P(I);\n for (var V = 0; V < k.length; V++) {\n var G = k[V];\n if (\"string\" != typeof _ || void 0 !== I.alternation && j.includes(I.locator[I.alternation].toString())) {\n if (I.match.nativeDef === G.match.nativeDef) {\n N = !0, P(G, I);\n break;\n }\n if (f(I, G, u)) {\n P(I, G) && (N = !0, k.splice(k.indexOf(G), 0, I));\n break;\n }\n if (f(G, I, u)) {\n P(G, I);\n break;\n }\n if (v = G, !0 === (a = I).match.static && !0 !== v.match.static && v.match.fn.test(a.match.def, l, e, !1, u, !1)) {\n w(I, G) || void 0 !== d.inputmask.userOptions.keepStatic ? P(I, G) && (N = !0, k.splice(k.indexOf(G), 0, I)) : u.keepStatic = !0;\n break;\n }\n }\n }\n N || k.push(I);\n }\n }\n m = b.concat(k), h = e, g = m.length > 0, r = k.length > 0, i = T.slice();\n } else r = c(y.matches[_] || t.matches[_], [ _ ].concat(s), p);\n if (r) return !0;\n }();\n if (r.isQuantifier && p !== t.matches[t.matches.indexOf(r) - 1]) return function() {\n for (var a = r, o = !1, f = i.length > 0 ? i.shift() : 0; f < (isNaN(a.quantifier.max) ? f + 1 : a.quantifier.max) && h <= e; f++) {\n var d = t.matches[t.matches.indexOf(a) - 1];\n if (r = c(d, [ f ].concat(s), d)) {\n if (m.forEach((function(t, i) {\n (n = b(d, t.match) ? t.match : m[m.length - 1].match).optionalQuantifier = f >= a.quantifier.min, \n n.jit = (f + 1) * (d.matches.indexOf(n) + 1) > a.quantifier.jit, n.optionalQuantifier && v(n, d) && (g = !0, \n h = e, u.greedy && null == l.validPositions[e - 1] && f > a.quantifier.min && -1 != [ \"*\", \"+\" ].indexOf(a.quantifier.max) && (m.pop(), \n y = void 0), o = !0, r = !1), !o && n.jit && (l.jitOffset[e] = d.matches.length - d.matches.indexOf(n));\n })), o) break;\n return !0;\n }\n }\n }();\n if (r = k(r, i, s, p)) return !0;\n } else h++;\n }\n for (var p = i.length > 0 ? i.shift() : 0; p < t.matches.length; p++) if (!0 !== t.matches[p].isQuantifier) {\n var v = c(t.matches[p], [ p ].concat(r), s);\n if (v && h === e) return v;\n if (h > e) break;\n }\n }\n function b(e, t) {\n var i = -1 != e.matches.indexOf(t);\n return i || e.matches.forEach((function(e, n) {\n void 0 === e.matches || i || (i = b(e, t));\n })), i;\n }\n if (e > -1) {\n if (void 0 === t) {\n for (var x, P = e - 1; void 0 === (x = l.validPositions[P] || l.tests[P]) && P > -1; ) P--;\n void 0 !== x && P > -1 && (v = function(e, t) {\n var i, n = [];\n return Array.isArray(t) || (t = [ t ]), t.length > 0 && (void 0 === t[0].alternation || !0 === u.keepStatic ? 0 === (n = c.call(o, e, t.slice()).locator.slice()).length && (n = t[0].locator.slice()) : t.forEach((function(e) {\n \"\" !== e.def && (0 === n.length ? (i = e.alternation, n = e.locator.slice()) : e.locator[i] && -1 === n[i].toString().indexOf(e.locator[i]) && (n[i] += \",\" + e.locator[i]));\n }))), n;\n }(P, x), y = v.join(\"\"), h = P);\n }\n if (l.tests[e] && l.tests[e][0].cd === y) return l.tests[e];\n for (var w = v.shift(); w < p.length; w++) {\n if (k(p[w], v, [ w ]) && h === e || h > e) break;\n }\n }\n return (0 === m.length || g) && m.push({\n match: {\n fn: null,\n static: !0,\n optionality: !1,\n casing: null,\n def: \"\",\n placeholder: \"\"\n },\n locator: [],\n mloc: {},\n cd: y\n }), void 0 !== t && l.tests[e] ? r = s.extend(!0, [], m) : (l.tests[e] = s.extend(!0, [], m), \n r = l.tests[e]), m.forEach((function(e) {\n e.match.optionality = e.match.defOptionality || !1;\n })), r;\n }\n },\n 7215: function(e, t, i) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.alternate = s, t.checkAlternationMatch = function(e, t, i) {\n for (var n, a = this.opts.greedy ? t : t.slice(0, 1), r = !1, o = void 0 !== i ? i.split(\",\") : [], s = 0; s < o.length; s++) -1 !== (n = e.indexOf(o[s])) && e.splice(n, 1);\n for (var l = 0; l < e.length; l++) if (a.includes(e[l])) {\n r = !0;\n break;\n }\n return r;\n }, t.handleRemove = function(e, t, i, o, l) {\n var c = this, u = this.maskset, f = this.opts;\n if ((f.numericInput || c.isRTL) && (t === a.keys.Backspace ? t = a.keys.Delete : t === a.keys.Delete && (t = a.keys.Backspace), \n c.isRTL)) {\n var d = i.end;\n i.end = i.begin, i.begin = d;\n }\n var p, h = r.getLastValidPosition.call(c, void 0, !0);\n i.end >= r.getBuffer.call(c).length && h >= i.end && (i.end = h + 1);\n t === a.keys.Backspace ? i.end - i.begin < 1 && (i.begin = r.seekPrevious.call(c, i.begin)) : t === a.keys.Delete && i.begin === i.end && (i.end = r.isMask.call(c, i.end, !0, !0) ? i.end + 1 : r.seekNext.call(c, i.end) + 1);\n if (!1 !== (p = v.call(c, i))) {\n if (!0 !== o && !1 !== f.keepStatic || null !== f.regex && -1 !== n.getTest.call(c, i.begin).match.def.indexOf(\"|\")) {\n var m = s.call(c, !0);\n if (m) {\n var g = void 0 !== m.caret ? m.caret : m.pos ? r.seekNext.call(c, m.pos.begin ? m.pos.begin : m.pos) : r.getLastValidPosition.call(c, -1, !0);\n (t !== a.keys.Delete || i.begin > g) && i.begin;\n }\n }\n !0 !== o && (u.p = t === a.keys.Delete ? i.begin + p : i.begin, u.p = r.determineNewCaretPosition.call(c, {\n begin: u.p,\n end: u.p\n }, !1, !1 === f.insertMode && t === a.keys.Backspace ? \"none\" : void 0).begin);\n }\n }, t.isComplete = c, t.isSelection = u, t.isValid = f, t.refreshFromBuffer = p, \n t.revalidateMask = v;\n var n = i(4713), a = i(2839), r = i(8711), o = i(6030);\n function s(e, t, i, a, o, l) {\n var c, u, d, p, h, v, m, g, y, k, b, x = this, P = this.dependencyLib, w = this.opts, S = x.maskset, M = P.extend(!0, [], S.validPositions), _ = P.extend(!0, {}, S.tests), O = !1, E = !1, T = void 0 !== o ? o : r.getLastValidPosition.call(x);\n if (l && (k = l.begin, b = l.end, l.begin > l.end && (k = l.end, b = l.begin)), \n -1 === T && void 0 === o) c = 0, u = (p = n.getTest.call(x, c)).alternation; else for (;T >= 0; T--) if ((d = S.validPositions[T]) && void 0 !== d.alternation) {\n if (T <= (e || 0) && p && p.locator[d.alternation] !== d.locator[d.alternation]) break;\n c = T, u = S.validPositions[c].alternation, p = d;\n }\n if (void 0 !== u) {\n m = parseInt(c), S.excludes[m] = S.excludes[m] || [], !0 !== e && S.excludes[m].push((0, \n n.getDecisionTaker)(p) + \":\" + p.alternation);\n var j = [], A = -1;\n for (h = m; h < r.getLastValidPosition.call(x, void 0, !0) + 1; h++) -1 === A && e <= h && void 0 !== t && (j.push(t), \n A = j.length - 1), (v = S.validPositions[h]) && !0 !== v.generatedInput && (void 0 === l || h < k || h >= b) && j.push(v.input), \n delete S.validPositions[h];\n for (-1 === A && void 0 !== t && (j.push(t), A = j.length - 1); void 0 !== S.excludes[m] && S.excludes[m].length < 10; ) {\n for (S.tests = {}, r.resetMaskSet.call(x, !0), O = !0, h = 0; h < j.length && (g = O.caret || r.getLastValidPosition.call(x, void 0, !0) + 1, \n y = j[h], O = f.call(x, g, y, !1, a, !0)); h++) h === A && (E = O), 1 == e && O && (E = {\n caretPos: h\n });\n if (O) break;\n if (r.resetMaskSet.call(x), p = n.getTest.call(x, m), S.validPositions = P.extend(!0, [], M), \n S.tests = P.extend(!0, {}, _), !S.excludes[m]) {\n E = s.call(x, e, t, i, a, m - 1, l);\n break;\n }\n var D = (0, n.getDecisionTaker)(p);\n if (-1 !== S.excludes[m].indexOf(D + \":\" + p.alternation)) {\n E = s.call(x, e, t, i, a, m - 1, l);\n break;\n }\n for (S.excludes[m].push(D + \":\" + p.alternation), h = m; h < r.getLastValidPosition.call(x, void 0, !0) + 1; h++) delete S.validPositions[h];\n }\n }\n return E && !1 === w.keepStatic || delete S.excludes[m], E;\n }\n function l(e, t, i) {\n var n = this.opts, r = this.maskset;\n switch (n.casing || t.casing) {\n case \"upper\":\n e = e.toUpperCase();\n break;\n\n case \"lower\":\n e = e.toLowerCase();\n break;\n\n case \"title\":\n var o = r.validPositions[i - 1];\n e = 0 === i || o && o.input === String.fromCharCode(a.keyCode.Space) ? e.toUpperCase() : e.toLowerCase();\n break;\n\n default:\n if (\"function\" == typeof n.casing) {\n var s = Array.prototype.slice.call(arguments);\n s.push(r.validPositions), e = n.casing.apply(this, s);\n }\n }\n return e;\n }\n function c(e) {\n var t = this, i = this.opts, a = this.maskset;\n if (\"function\" == typeof i.isComplete) return i.isComplete(e, i);\n if (\"*\" !== i.repeat) {\n var o = !1, s = r.determineLastRequiredPosition.call(t, !0), l = r.seekPrevious.call(t, s.l);\n if (void 0 === s.def || s.def.newBlockMarker || s.def.optionality || s.def.optionalQuantifier) {\n o = !0;\n for (var c = 0; c <= l; c++) {\n var u = n.getTestTemplate.call(t, c).match;\n if (!0 !== u.static && void 0 === a.validPositions[c] && !0 !== u.optionality && !0 !== u.optionalQuantifier || !0 === u.static && e[c] !== n.getPlaceholder.call(t, c, u)) {\n o = !1;\n break;\n }\n }\n }\n return o;\n }\n }\n function u(e) {\n var t = this.opts.insertMode ? 0 : 1;\n return this.isRTL ? e.begin - e.end > t : e.end - e.begin > t;\n }\n function f(e, t, i, a, o, d, m) {\n var g = this, y = this.dependencyLib, k = this.opts, b = g.maskset;\n i = !0 === i;\n var x = e;\n function P(e) {\n if (void 0 !== e) {\n if (void 0 !== e.remove && (Array.isArray(e.remove) || (e.remove = [ e.remove ]), \n e.remove.sort((function(e, t) {\n return g.isRTL ? e.pos - t.pos : t.pos - e.pos;\n })).forEach((function(e) {\n v.call(g, {\n begin: e,\n end: e + 1\n });\n })), e.remove = void 0), void 0 !== e.insert && (Array.isArray(e.insert) || (e.insert = [ e.insert ]), \n e.insert.sort((function(e, t) {\n return g.isRTL ? t.pos - e.pos : e.pos - t.pos;\n })).forEach((function(e) {\n \"\" !== e.c && f.call(g, e.pos, e.c, void 0 === e.strict || e.strict, void 0 !== e.fromIsValid ? e.fromIsValid : a);\n })), e.insert = void 0), e.refreshFromBuffer && e.buffer) {\n var t = e.refreshFromBuffer;\n p.call(g, !0 === t ? t : t.start, t.end, e.buffer), e.refreshFromBuffer = void 0;\n }\n void 0 !== e.rewritePosition && (x = e.rewritePosition, e = !0);\n }\n return e;\n }\n function w(t, i, o) {\n var s = !1;\n return n.getTests.call(g, t).every((function(c, f) {\n var d = c.match;\n if (r.getBuffer.call(g, !0), !1 !== (s = (!d.jit || void 0 !== b.validPositions[r.seekPrevious.call(g, t)]) && (null != d.fn ? d.fn.test(i, b, t, o, k, u.call(g, e)) : (i === d.def || i === k.skipOptionalPartCharacter) && \"\" !== d.def && {\n c: n.getPlaceholder.call(g, t, d, !0) || d.def,\n pos: t\n }))) {\n var p = void 0 !== s.c ? s.c : i, h = t;\n return p = p === k.skipOptionalPartCharacter && !0 === d.static ? n.getPlaceholder.call(g, t, d, !0) || d.def : p, \n !0 !== (s = P(s)) && void 0 !== s.pos && s.pos !== t && (h = s.pos), !0 !== s && void 0 === s.pos && void 0 === s.c ? !1 : (!1 === v.call(g, e, y.extend({}, c, {\n input: l.call(g, p, d, h)\n }), a, h) && (s = !1), !1);\n }\n return !0;\n })), s;\n }\n void 0 !== e.begin && (x = g.isRTL ? e.end : e.begin);\n var S = !0, M = y.extend(!0, {}, b.validPositions);\n if (!1 === k.keepStatic && void 0 !== b.excludes[x] && !0 !== o && !0 !== a) for (var _ = x; _ < (g.isRTL ? e.begin : e.end); _++) void 0 !== b.excludes[_] && (b.excludes[_] = void 0, \n delete b.tests[_]);\n if (\"function\" == typeof k.preValidation && !0 !== a && !0 !== d && (S = P(S = k.preValidation.call(g, r.getBuffer.call(g), x, t, u.call(g, e), k, b, e, i || o))), \n !0 === S) {\n if (S = w(x, t, i), (!i || !0 === a) && !1 === S && !0 !== d) {\n var O = b.validPositions[x];\n if (!O || !0 !== O.match.static || O.match.def !== t && t !== k.skipOptionalPartCharacter) {\n if (k.insertMode || void 0 === b.validPositions[r.seekNext.call(g, x)] || e.end > x) {\n var E = !1;\n if (b.jitOffset[x] && void 0 === b.validPositions[r.seekNext.call(g, x)] && !1 !== (S = f.call(g, x + b.jitOffset[x], t, !0, !0)) && (!0 !== o && (S.caret = x), \n E = !0), e.end > x && (b.validPositions[x] = void 0), !E && !r.isMask.call(g, x, k.keepStatic && 0 === x)) for (var T = x + 1, j = r.seekNext.call(g, x, !1, 0 !== x); T <= j; T++) if (!1 !== (S = w(T, t, i))) {\n S = h.call(g, x, void 0 !== S.pos ? S.pos : T) || S, x = T;\n break;\n }\n }\n } else S = {\n caret: r.seekNext.call(g, x)\n };\n }\n g.hasAlternator && !0 !== o && !i && (!1 === S && k.keepStatic && (c.call(g, r.getBuffer.call(g)) || 0 === x) ? S = s.call(g, x, t, i, a, void 0, e) : (u.call(g, e) && b.tests[x] && b.tests[x].length > 1 && k.keepStatic || 1 == S && !0 !== k.numericInput && b.tests[x] && b.tests[x].length > 1 && r.getLastValidPosition.call(g, void 0, !0) > x) && (S = s.call(g, !0))), \n !0 === S && (S = {\n pos: x\n });\n }\n if (\"function\" == typeof k.postValidation && !0 !== a && !0 !== d) {\n var A = k.postValidation.call(g, r.getBuffer.call(g, !0), void 0 !== e.begin ? g.isRTL ? e.end : e.begin : e, t, S, k, b, i, m);\n void 0 !== A && (S = !0 === A ? S : A);\n }\n S && void 0 === S.pos && (S.pos = x), !1 === S || !0 === d ? (r.resetMaskSet.call(g, !0), \n b.validPositions = y.extend(!0, [], M)) : h.call(g, void 0, x, !0);\n var D = P(S);\n void 0 !== g.maxLength && (r.getBuffer.call(g).length > g.maxLength && !a && (r.resetMaskSet.call(g, !0), \n b.validPositions = y.extend(!0, [], M), D = !1));\n return D;\n }\n function d(e, t, i) {\n for (var a = this.maskset, r = !1, o = n.getTests.call(this, e), s = 0; s < o.length; s++) {\n if (o[s].match && (o[s].match.nativeDef === t.match[i.shiftPositions ? \"def\" : \"nativeDef\"] && (!i.shiftPositions || !t.match.static) || o[s].match.nativeDef === t.match.nativeDef || i.regex && !o[s].match.static && o[s].match.fn.test(t.input, a, e, !1, i))) {\n r = !0;\n break;\n }\n if (o[s].match && o[s].match.def === t.match.nativeDef) {\n r = void 0;\n break;\n }\n }\n return !1 === r && void 0 !== a.jitOffset[e] && (r = d.call(this, e + a.jitOffset[e], t, i)), \n r;\n }\n function p(e, t, i) {\n var n, a, s = this, l = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, d = s.isRTL ? i.slice().reverse() : i;\n if (c.skipOptionalPartCharacter = \"\", !0 === e) r.resetMaskSet.call(s), l.tests = {}, \n e = 0, t = i.length, a = r.determineNewCaretPosition.call(s, {\n begin: 0,\n end: 0\n }, !1).begin; else {\n for (n = e; n < t; n++) delete l.validPositions[n];\n a = e;\n }\n var p = new u.Event(\"keypress\");\n for (n = e; n < t; n++) {\n p.key = d[n].toString(), s.ignorable = !1;\n var h = o.EventHandlers.keypressEvent.call(s, p, !0, !1, !1, a);\n !1 !== h && void 0 !== h && (a = h.forwardPosition);\n }\n c.skipOptionalPartCharacter = f;\n }\n function h(e, t, i) {\n var a = this, o = this.maskset, s = this.dependencyLib;\n if (void 0 === e) for (e = t - 1; e > 0 && !o.validPositions[e]; e--) ;\n for (var l = e; l < t; l++) {\n if (void 0 === o.validPositions[l] && !r.isMask.call(a, l, !1)) if (0 == l ? n.getTest.call(a, l) : o.validPositions[l - 1]) {\n var c = n.getTests.call(a, l).slice();\n \"\" === c[c.length - 1].match.def && c.pop();\n var u, d = n.determineTestTemplate.call(a, l, c);\n if (d && (!0 !== d.match.jit || \"master\" === d.match.newBlockMarker && (u = o.validPositions[l + 1]) && !0 === u.match.optionalQuantifier) && ((d = s.extend({}, d, {\n input: n.getPlaceholder.call(a, l, d.match, !0) || d.match.def\n })).generatedInput = !0, v.call(a, l, d, !0), !0 !== i)) {\n var p = o.validPositions[t].input;\n return o.validPositions[t] = void 0, f.call(a, t, p, !0, !0);\n }\n }\n }\n }\n function v(e, t, i, a) {\n var o = this, s = this.maskset, l = this.opts, c = this.dependencyLib;\n function u(e, t, i) {\n var n = t[e];\n if (void 0 !== n && !0 === n.match.static && !0 !== n.match.optionality && (void 0 === t[0] || void 0 === t[0].alternation)) {\n var a = i.begin <= e - 1 ? t[e - 1] && !0 === t[e - 1].match.static && t[e - 1] : t[e - 1], r = i.end > e + 1 ? t[e + 1] && !0 === t[e + 1].match.static && t[e + 1] : t[e + 1];\n return a && r;\n }\n return !1;\n }\n var p = 0, h = void 0 !== e.begin ? e.begin : e, v = void 0 !== e.end ? e.end : e, m = !0;\n if (e.begin > e.end && (h = e.end, v = e.begin), a = void 0 !== a ? a : h, void 0 === i && (h !== v || l.insertMode && void 0 !== s.validPositions[a] || void 0 === t || t.match.optionalQuantifier || t.match.optionality)) {\n var g, y = c.extend(!0, {}, s.validPositions), k = r.getLastValidPosition.call(o, void 0, !0);\n for (s.p = h, g = k; g >= h; g--) delete s.validPositions[g], void 0 === t && delete s.tests[g + 1];\n var b, x, P = a, w = P;\n for (t && (s.validPositions[a] = c.extend(!0, {}, t), w++, P++), g = t ? v : v - 1; g <= k; g++) {\n if (void 0 !== (b = y[g]) && !0 !== b.generatedInput && (g >= v || g >= h && u(g, y, {\n begin: h,\n end: v\n }))) {\n for (;\"\" !== n.getTest.call(o, w).match.def; ) {\n if (!1 !== (x = d.call(o, w, b, l)) || \"+\" === b.match.def) {\n \"+\" === b.match.def && r.getBuffer.call(o, !0);\n var S = f.call(o, w, b.input, \"+\" !== b.match.def, !0);\n if (m = !1 !== S, P = (S.pos || w) + 1, !m && x) break;\n } else m = !1;\n if (m) {\n void 0 === t && b.match.static && g === e.begin && p++;\n break;\n }\n if (!m && r.getBuffer.call(o), w > s.maskLength) break;\n w++;\n }\n \"\" == n.getTest.call(o, w).match.def && (m = !1), w = P;\n }\n if (!m) break;\n }\n if (!m) return s.validPositions = c.extend(!0, [], y), r.resetMaskSet.call(o, !0), \n !1;\n } else t && n.getTest.call(o, a).match.cd === t.match.cd && (s.validPositions[a] = c.extend(!0, {}, t));\n return r.resetMaskSet.call(o, !0), p;\n }\n }\n }, t = {};\n function i(n) {\n var a = t[n];\n if (void 0 !== a) return a.exports;\n var r = t[n] = {\n exports: {}\n };\n return e[n](r, r.exports, i), r.exports;\n }\n var n = {};\n return function() {\n var e, t = n;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.default = void 0, i(7149), i(3194), i(9302), i(4013), i(3851), i(219), i(207), \n i(5296);\n var a = ((e = i(2394)) && e.__esModule ? e : {\n default: e\n }).default;\n t.default = a;\n }(), n;\n }();\n}));","/*!\n * The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)\n * Copyright (c) 2016 Edson Hilios\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n(function(factory) {\n \"use strict\";\n if (typeof define === \"function\" && define.amd) {\n define([ \"jquery\" ], factory);\n } else {\n factory(jQuery);\n }\n})(function($) {\n \"use strict\";\n var instances = [], matchers = [], defaultOptions = {\n precision: 100,\n elapse: false,\n defer: false\n };\n matchers.push(/^[0-9]*$/.source);\n matchers.push(/([0-9]{1,2}\\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers.push(/[0-9]{4}([\\/\\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers = new RegExp(matchers.join(\"|\"));\n function parseDateString(dateString) {\n if (dateString instanceof Date) {\n return dateString;\n }\n if (String(dateString).match(matchers)) {\n if (String(dateString).match(/^[0-9]*$/)) {\n dateString = Number(dateString);\n }\n if (String(dateString).match(/\\-/)) {\n dateString = String(dateString).replace(/\\-/g, \"/\");\n }\n return new Date(dateString);\n } else {\n throw new Error(\"Couldn't cast `\" + dateString + \"` to a date object.\");\n }\n }\n var DIRECTIVE_KEY_MAP = {\n Y: \"years\",\n m: \"months\",\n n: \"daysToMonth\",\n d: \"daysToWeek\",\n w: \"weeks\",\n W: \"weeksToMonth\",\n H: \"hours\",\n M: \"minutes\",\n S: \"seconds\",\n D: \"totalDays\",\n I: \"totalHours\",\n N: \"totalMinutes\",\n T: \"totalSeconds\"\n };\n function escapedRegExp(str) {\n var sanitize = str.toString().replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n return new RegExp(sanitize);\n }\n function strftime(offsetObject) {\n return function(format) {\n var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);\n if (directives) {\n for (var i = 0, len = directives.length; i < len; ++i) {\n var directive = directives[i].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), regexp = escapedRegExp(directive[0]), modifier = directive[1] || \"\", plural = directive[3] || \"\", value = null;\n directive = directive[2];\n if (DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {\n value = DIRECTIVE_KEY_MAP[directive];\n value = Number(offsetObject[value]);\n }\n if (value !== null) {\n if (modifier === \"!\") {\n value = pluralize(plural, value);\n }\n if (modifier === \"\") {\n if (value < 10) {\n value = \"0\" + value.toString();\n }\n }\n format = format.replace(regexp, value.toString());\n }\n }\n }\n format = format.replace(/%%/, \"%\");\n return format;\n };\n }\n function pluralize(format, count) {\n var plural = \"s\", singular = \"\";\n if (format) {\n format = format.replace(/(:|;|\\s)/gi, \"\").split(/\\,/);\n if (format.length === 1) {\n plural = format[0];\n } else {\n singular = format[0];\n plural = format[1];\n }\n }\n if (Math.abs(count) > 1) {\n return plural;\n } else {\n return singular;\n }\n }\n var Countdown = function(el, finalDate, options) {\n this.el = el;\n this.$el = $(el);\n this.interval = null;\n this.offset = {};\n this.options = $.extend({}, defaultOptions);\n this.instanceNumber = instances.length;\n instances.push(this);\n this.$el.data(\"countdown-instance\", this.instanceNumber);\n if (options) {\n if (typeof options === \"function\") {\n this.$el.on(\"update.countdown\", options);\n this.$el.on(\"stoped.countdown\", options);\n this.$el.on(\"finish.countdown\", options);\n } else {\n this.options = $.extend({}, defaultOptions, options);\n }\n }\n this.setFinalDate(finalDate);\n if (this.options.defer === false) {\n this.start();\n }\n };\n $.extend(Countdown.prototype, {\n start: function() {\n if (this.interval !== null) {\n clearInterval(this.interval);\n }\n var self = this;\n this.update();\n this.interval = setInterval(function() {\n self.update.call(self);\n }, this.options.precision);\n },\n stop: function() {\n clearInterval(this.interval);\n this.interval = null;\n this.dispatchEvent(\"stoped\");\n },\n toggle: function() {\n if (this.interval) {\n this.stop();\n } else {\n this.start();\n }\n },\n pause: function() {\n this.stop();\n },\n resume: function() {\n this.start();\n },\n remove: function() {\n this.stop.call(this);\n instances[this.instanceNumber] = null;\n delete this.$el.data().countdownInstance;\n },\n setFinalDate: function(value) {\n this.finalDate = parseDateString(value);\n },\n update: function() {\n if (this.$el.closest(\"html\").length === 0) {\n this.remove();\n return;\n }\n var hasEventsAttached = $._data(this.el, \"events\") !== undefined, now = new Date(), newTotalSecsLeft;\n newTotalSecsLeft = this.finalDate.getTime() - now.getTime();\n newTotalSecsLeft = Math.ceil(newTotalSecsLeft / 1e3);\n newTotalSecsLeft = !this.options.elapse && newTotalSecsLeft < 0 ? 0 : Math.abs(newTotalSecsLeft);\n if (this.totalSecsLeft === newTotalSecsLeft || !hasEventsAttached) {\n return;\n } else {\n this.totalSecsLeft = newTotalSecsLeft;\n }\n this.elapsed = now >= this.finalDate;\n this.offset = {\n seconds: this.totalSecsLeft % 60,\n minutes: Math.floor(this.totalSecsLeft / 60) % 60,\n hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,\n days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToWeek: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 % 30.4368),\n weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),\n weeksToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7) % 4,\n months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30.4368),\n years: Math.abs(this.finalDate.getFullYear() - now.getFullYear()),\n totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),\n totalHours: Math.floor(this.totalSecsLeft / 60 / 60),\n totalMinutes: Math.floor(this.totalSecsLeft / 60),\n totalSeconds: this.totalSecsLeft\n };\n if (!this.options.elapse && this.totalSecsLeft === 0) {\n this.stop();\n this.dispatchEvent(\"finish\");\n } else {\n this.dispatchEvent(\"update\");\n }\n },\n dispatchEvent: function(eventName) {\n var event = $.Event(eventName + \".countdown\");\n event.finalDate = this.finalDate;\n event.elapsed = this.elapsed;\n event.offset = $.extend({}, this.offset);\n event.strftime = strftime(this.offset);\n this.$el.trigger(event);\n }\n });\n $.fn.countdown = function() {\n var argumentsArray = Array.prototype.slice.call(arguments, 0);\n return this.each(function() {\n var instanceNumber = $(this).data(\"countdown-instance\");\n if (instanceNumber !== undefined) {\n var instance = instances[instanceNumber], method = argumentsArray[0];\n if (Countdown.prototype.hasOwnProperty(method)) {\n instance[method].apply(instance, argumentsArray.slice(1));\n } else if (String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {\n instance.setFinalDate.call(instance, method);\n instance.start();\n } else {\n $.error(\"Method %s does not exist on jQuery.countdown\".replace(/\\%s/gi, method));\n }\n } else {\n new Countdown(this, argumentsArray[0], argumentsArray[1]);\n }\n });\n };\n});","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"