Version Description
Download this release
Release Info
Developer | gutenbergplugin |
Plugin | Gutenberg |
Version | 14.1.1 |
Comparing to | |
See all releases |
Code changes from version 14.1.0 to 14.1.1
- build/blocks/index.js +1 -1
- build/blocks/index.min.asset.php +1 -1
- build/blocks/index.min.js +1 -1
- build/blocks/index.min.js.map +1 -1
build/blocks/index.js
CHANGED
@@ -9443,7 +9443,7 @@ function isMatchingSearchTerm(state, nameOrType, searchTerm) {
|
|
9443 |
term => term.trim()]);
|
9444 |
const normalizedSearchTerm = getNormalizedSearchTerm(searchTerm);
|
9445 |
const isSearchMatch = (0,external_lodash_namespaceObject.flow)([getNormalizedSearchTerm, normalizedCandidate => (0,external_lodash_namespaceObject.includes)(normalizedCandidate, normalizedSearchTerm)]);
|
9446 |
-
return isSearchMatch(blockType.title) || (0,external_lodash_namespaceObject.some)(blockType.keywords, isSearchMatch) || isSearchMatch(blockType.category) || isSearchMatch(blockType.description);
|
9447 |
}
|
9448 |
/**
|
9449 |
* Returns a boolean indicating if a block has child blocks or not.
|
9443 |
term => term.trim()]);
|
9444 |
const normalizedSearchTerm = getNormalizedSearchTerm(searchTerm);
|
9445 |
const isSearchMatch = (0,external_lodash_namespaceObject.flow)([getNormalizedSearchTerm, normalizedCandidate => (0,external_lodash_namespaceObject.includes)(normalizedCandidate, normalizedSearchTerm)]);
|
9446 |
+
return isSearchMatch(blockType.title) || (0,external_lodash_namespaceObject.some)(blockType.keywords, isSearchMatch) || isSearchMatch(blockType.category) || typeof blockType.description === 'string' && isSearchMatch(blockType.description);
|
9447 |
}
|
9448 |
/**
|
9449 |
* Returns a boolean indicating if a block has child blocks or not.
|
build/blocks/index.min.asset.php
CHANGED
@@ -1 +1 @@
|
|
1 |
-
<?php return array('dependencies' => array('lodash', 'wp-autop', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-shortcode'), 'version' => '
|
1 |
+
<?php return array('dependencies' => array('lodash', 'wp-autop', 'wp-blob', 'wp-block-serialization-default-parser', 'wp-data', 'wp-deprecated', 'wp-dom', 'wp-element', 'wp-hooks', 'wp-html-entities', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-shortcode'), 'version' => 'bcbe1daa83d72d2da9d5');
|
build/blocks/index.min.js
CHANGED
@@ -10,5 +10,5 @@
|
|
10 |
/* translators: accessibility text. %1: The block title. %2: The block label. */
|
11 |
(0,i.__)("%1$s Block. %2$s"),a,o):(0,i.sprintf)(
|
12 |
/* translators: accessibility text. %s: The block title. */
|
13 |
-
(0,i.__)("%s Block"),a)}function nt(e,t){const r=fe(e);if(void 0===r)throw new Error(`Block type '${e}' is not registered.`);return(0,o.reduce)(r.attributes,((e,r,n)=>{const a=t[n];return void 0!==a?e[n]=a:r.hasOwnProperty("default")&&(e[n]=r.default),-1!==["node","children"].indexOf(r.source)&&("string"==typeof e[n]?e[n]=[e[n]]:Array.isArray(e[n])||(e[n]=[])),e}),{})}function at(e,t){var r;const n=null===(r=fe(e))||void 0===r?void 0:r.attributes;if(!n)return[];const a=Object.keys(n);return t?a.filter((e=>{var r;return(null===(r=n[e])||void 0===r?void 0:r.__experimentalRole)===t})):a}function ot(e,t){return Object.fromEntries(Object.entries(e).filter((e=>{let[r]=e;return!t.includes(r)})))}const it=[{slug:"text",title:(0,i.__)("Text")},{slug:"media",title:(0,i.__)("Media")},{slug:"design",title:(0,i.__)("Design")},{slug:"widgets",title:(0,i.__)("Widgets")},{slug:"theme",title:(0,i.__)("Theme")},{slug:"embed",title:(0,i.__)("Embeds")},{slug:"reusable",title:(0,i.__)("Reusable blocks")}];function st(e){return e.reduce(((e,t)=>({...e,[t.name]:t})),{})}function lt(e){return e.reduce(((e,t)=>(e.some((e=>e.name===t.name))||e.push(t),e)),[])}function ct(e){return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1?arguments[1]:void 0;switch(r.type){case"REMOVE_BLOCK_TYPES":return-1!==r.names.indexOf(t)?null:t;case e:return r.name||null}return t}}const ut=ct("SET_DEFAULT_BLOCK_NAME"),dt=ct("SET_FREEFORM_FALLBACK_BLOCK_NAME"),pt=ct("SET_UNREGISTERED_FALLBACK_BLOCK_NAME"),ht=ct("SET_GROUPING_BLOCK_NAME"),ft=(0,a.combineReducers)({unprocessedBlockTypes:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_UNPROCESSED_BLOCK_TYPE":return{...e,[t.blockType.name]:t.blockType};case"REMOVE_BLOCK_TYPES":return ot(e,t.names)}return e},blockTypes:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_TYPES":return{...e,...st(t.blockTypes)};case"REMOVE_BLOCK_TYPES":return ot(e,t.names)}return e},blockStyles:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_TYPES":return{...e,...(0,o.mapValues)(st(t.blockTypes),(t=>lt([...(0,o.get)(t,["styles"],[]).map((e=>({...e,source:"block"}))),...(0,o.get)(e,[t.name],[]).filter((e=>{let{source:t}=e;return"block"!==t}))])))};case"ADD_BLOCK_STYLES":return{...e,[t.blockName]:lt([...(0,o.get)(e,[t.blockName],[]),...t.styles])};case"REMOVE_BLOCK_STYLES":return{...e,[t.blockName]:(0,o.filter)((0,o.get)(e,[t.blockName],[]),(e=>-1===t.styleNames.indexOf(e.name)))}}return e},blockVariations:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_TYPES":return{...e,...(0,o.mapValues)(st(t.blockTypes),(t=>lt([...(0,o.get)(t,["variations"],[]).map((e=>({...e,source:"block"}))),...(0,o.get)(e,[t.name],[]).filter((e=>{let{source:t}=e;return"block"!==t}))])))};case"ADD_BLOCK_VARIATIONS":return{...e,[t.blockName]:lt([...(0,o.get)(e,[t.blockName],[]),...t.variations])};case"REMOVE_BLOCK_VARIATIONS":return{...e,[t.blockName]:(0,o.filter)((0,o.get)(e,[t.blockName],[]),(e=>-1===t.variationNames.indexOf(e.name)))}}return e},defaultBlockName:ut,freeformFallbackBlockName:dt,unregisteredFallbackBlockName:pt,groupingBlockName:ht,categories:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:it,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_CATEGORIES":return t.categories||[];case"UPDATE_CATEGORY":if(!t.category||(0,o.isEmpty)(t.category))return e;if((0,o.find)(e,["slug",t.slug]))return(0,o.map)(e,(e=>e.slug===t.slug?{...e,...t.category}:e))}return e},collections:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_COLLECTION":return{...e,[t.namespace]:{title:t.title,icon:t.icon}};case"REMOVE_BLOCK_COLLECTION":return ot(e,t.namespace)}return e}});var gt={};function mt(e){return[e]}function bt(e,t,r){var n;if(e.length!==t.length)return!1;for(n=r;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function _t(e,t){var r,n=t||mt;function a(e){var t,n,a,o,i,s=r,l=!0;for(t=0;t<e.length;t++){if(!(i=n=e[t])||"object"!=typeof i){l=!1;break}s.has(n)?s=s.get(n):(a=new WeakMap,s.set(n,a),s=a)}return s.has(gt)||((o=function(){var e={clear:function(){e.head=null}};return e}()).isUniqueByDependants=l,s.set(gt,o)),s.get(gt)}function o(){r=new WeakMap}function i(){var t,r,o,i,s,l=arguments.length;for(i=new Array(l),o=0;o<l;o++)i[o]=arguments[o];for((t=a(s=n.apply(null,i))).isUniqueByDependants||(t.lastDependants&&!bt(s,t.lastDependants,0)&&t.clear(),t.lastDependants=s),r=t.head;r;){if(bt(r.args,i,1))return r!==t.head&&(r.prev.next=r.next,r.next&&(r.next.prev=r.prev),r.next=t.head,r.prev=null,t.head.prev=r,t.head=r),r.val;r=r.next}return r={val:e.apply(null,i)},i[0]=null,r.args=i,t.head&&(t.head.prev=r,r.next=t.head),t.head=r,r.val}return i.getDependants=n,i.clear=o,o(),i}var kt=r(4793),wt=r.n(kt);const yt=(e,t)=>"string"==typeof t?Ct(e,t):t;function vt(e){return e.unprocessedBlockTypes}const Tt=_t((e=>Object.values(e.blockTypes)),(e=>[e.blockTypes]));function Ct(e,t){return e.blockTypes[t]}function xt(e,t){return e.blockStyles[t]}const Et=_t(((e,t,r)=>{const n=e.blockVariations[t];return n&&r?n.filter((e=>(e.scope||["block","inserter"]).includes(r))):n}),((e,t)=>[e.blockVariations[t]]));function At(e,t,r,n){const a=Et(e,t,n);return null==a?void 0:a.find((n=>{var a;if(Array.isArray(n.isActive)){const a=Ct(e,t),o=Object.keys((null==a?void 0:a.attributes)||{}),i=n.isActive.filter((e=>o.includes(e)));return 0!==i.length&&i.every((e=>r[e]===n.attributes[e]))}return null===(a=n.isActive)||void 0===a?void 0:a.call(n,r,n.attributes)}))}function Bt(e,t,r){const n=Et(e,t,r);return[...n].reverse().find((e=>{let{isDefault:t}=e;return!!t}))||n[0]}function St(e){return e.categories}function Nt(e){return e.collections}function Pt(e){return e.defaultBlockName}function Lt(e){return e.freeformFallbackBlockName}function Mt(e){return e.unregisteredFallbackBlockName}function jt(e){return e.groupingBlockName}const Ot=_t(((e,t)=>(0,o.map)((0,o.filter)(e.blockTypes,(e=>(0,o.includes)(e.parent,t))),(e=>{let{name:t}=e;return t}))),(e=>[e.blockTypes])),zt=(e,t,r,n)=>{const a=yt(e,t);return null!=a&&a.supports?(0,o.get)(a.supports,r,n):n};function Dt(e,t,r,n){return!!zt(e,t,r,n)}function It(e,t,r){const n=yt(e,t),a=(0,o.flow)([e=>wt()(null!=e?e:""),e=>e.toLowerCase(),e=>e.trim()]),i=a(r),s=(0,o.flow)([a,e=>(0,o.includes)(e,i)]);return s(n.title)||(0,o.some)(n.keywords,s)||s(n.category)||s(n.description)}const Vt=(e,t)=>Ot(e,t).length>0,Ht=(e,t)=>(0,o.some)(Ot(e,t),(t=>Dt(e,t,"inserter",!0))),Rt=_t(((e,t)=>{const r=Ct(e,t);return!!r&&Object.entries(r.attributes).some((e=>{let[,{__experimentalRole:t}]=e;return"content"===t}))}),((e,t)=>{var r;return[null===(r=e.blockTypes[t])||void 0===r?void 0:r.attributes]}));function $t(e){return"[object Object]"===Object.prototype.toString.call(e)}const{error:Ft,warn:Ut}=window.console,qt={common:"text",formatting:"text",layout:"design"};function Gt(e){return"function"==typeof e}const Kt=(e,t)=>{let{select:r}=t;const{name:n}=e,a=(0,ze.applyFilters)("blocks.registerBlockType",{...e},n,null);if(a.deprecated&&(a.deprecated=a.deprecated.map((t=>(0,o.pick)((0,ze.applyFilters)("blocks.registerBlockType",{...ot(e,V),...t},n,t),V)))),function(e){var t,r;return!1!==$t(e)&&(void 0===(t=e.constructor)||!1!==$t(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf"))}(a))if(Gt(a.save))if(!("edit"in a)||Gt(a.edit))if(qt.hasOwnProperty(a.category)&&(a.category=qt[a.category]),"category"in a&&!(0,o.some)(r.getCategories(),{slug:a.category})&&(Ut('The block "'+n+'" is registered with an invalid category "'+a.category+'".'),delete a.category),"title"in a&&""!==a.title)if("string"==typeof a.title){if(a.icon=Je(a.icon),Qe(a.icon.src))return a;Ft("The icon passed is invalid. The icon should be a string, an element, a function, or an object following the specifications documented in https://developer.wordpress.org/block-editor/developers/block-api/block-registration/#icon-optional")}else Ft("Block titles must be strings.");else Ft('The block "'+n+'" must have a title.');else Ft('The "edit" property must be a valid function.');else Ft('The "save" property must be a valid function.');else Ft("Block settings must be a valid object.")};function Wt(e){return{type:"ADD_BLOCK_TYPES",blockTypes:(0,o.castArray)(e)}}const Yt=e=>t=>{let{dispatch:r,select:n}=t;r({type:"ADD_UNPROCESSED_BLOCK_TYPE",blockType:e});const a=Kt(e,{select:n});a&&r.addBlockTypes(a)},Zt=()=>e=>{let{dispatch:t,select:r}=e;const n=r.__experimentalGetUnprocessedBlockTypes(),a=Object.keys(n).reduce(((e,t)=>{const a=Kt(n[t],{select:r});return a&&e.push(a),e}),[]);a.length&&t.addBlockTypes(a)};function Xt(e){return{type:"REMOVE_BLOCK_TYPES",names:(0,o.castArray)(e)}}function Qt(e,t){return{type:"ADD_BLOCK_STYLES",styles:(0,o.castArray)(t),blockName:e}}function Jt(e,t){return{type:"REMOVE_BLOCK_STYLES",styleNames:(0,o.castArray)(t),blockName:e}}function er(e,t){return{type:"ADD_BLOCK_VARIATIONS",variations:(0,o.castArray)(t),blockName:e}}function tr(e,t){return{type:"REMOVE_BLOCK_VARIATIONS",variationNames:(0,o.castArray)(t),blockName:e}}function rr(e){return{type:"SET_DEFAULT_BLOCK_NAME",name:e}}function nr(e){return{type:"SET_FREEFORM_FALLBACK_BLOCK_NAME",name:e}}function ar(e){return{type:"SET_UNREGISTERED_FALLBACK_BLOCK_NAME",name:e}}function or(e){return{type:"SET_GROUPING_BLOCK_NAME",name:e}}function ir(e){return{type:"SET_CATEGORIES",categories:e}}function sr(e,t){return{type:"UPDATE_CATEGORY",slug:e,category:t}}function lr(e,t,r){return{type:"ADD_BLOCK_COLLECTION",namespace:e,title:t,icon:r}}function cr(e){return{type:"REMOVE_BLOCK_COLLECTION",namespace:e}}const ur=(0,a.createReduxStore)("core/blocks",{reducer:ft,selectors:e,actions:t});(0,a.register)(ur);const dr=window.wp.blockSerializationDefaultParser,pr=window.wp.autop,hr=window.wp.isShallowEqual;var fr=r.n(hr);function gr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{isCommentDelimited:r=!0}=t,{blockName:n,attrs:a={},innerBlocks:o=[],innerContent:i=[]}=e;let s=0;const l=i.map((e=>null!==e?e:gr(o[s++],t))).join("\n").replace(/\n+/g,"\n").trim();return r?Er(n,a,l):l}function mr(e){const t="wp-block-"+e.replace(/\//,"-").replace(/^core-/,"");return(0,ze.applyFilters)("blocks.getBlockDefaultClassName",t,e)}function br(e){const t="editor-block-list-item-"+e.replace(/\//,"-").replace(/^core-/,"");return(0,ze.applyFilters)("blocks.getBlockMenuDefaultClassName",t,e)}const _r={},kr={};function wr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{blockType:t,attributes:r}=_r;return(0,ze.applyFilters)("blocks.getSaveContent.extraProps",{...e},t,r)}function yr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{innerBlocks:t}=kr,r=Br(t,{isInnerBlocks:!0}),n=(0,z.createElement)(z.RawHTML,null,r);return{...e,children:n}}function vr(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const n=et(e);let{save:a}=n;if(a.prototype instanceof z.Component){const e=new a({attributes:t});a=e.render.bind(e)}_r.blockType=n,_r.attributes=t,kr.innerBlocks=r;let o=a({attributes:t,innerBlocks:r});if(null!==o&&"object"==typeof o&&(0,ze.hasFilter)("blocks.getSaveContent.extraProps")&&!(n.apiVersion>1)){const e=(0,ze.applyFilters)("blocks.getSaveContent.extraProps",{...o.props},n,t);fr()(e,o.props)||(o=(0,z.cloneElement)(o,e))}return(0,ze.applyFilters)("blocks.getSaveElement",o,n,t)}function Tr(e,t,r){const n=et(e);return(0,z.renderToString)(vr(n,t,r))}function Cr(e,t){var r;return Object.entries(null!==(r=e.attributes)&&void 0!==r?r:{}).reduce(((e,r)=>{let[n,a]=r;const o=t[n];return void 0===o||void 0!==a.source||"default"in a&&a.default===o||(e[n]=o),e}),{})}function xr(e){let t=e.originalContent;if(e.isValid||e.innerBlocks.length)try{t=Tr(e.name,e.attributes,e.innerBlocks)}catch(e){}return t}function Er(e,t,r){const n=t&&Object.entries(t).length?function(e){return JSON.stringify(e).replace(/--/g,"\\u002d\\u002d").replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026").replace(/\\"/g,"\\u0022")}(t)+" ":"",a=null!=e&&e.startsWith("core/")?e.slice(5):e;return r?`\x3c!-- wp:${a} ${n}--\x3e\n`+r+`\n\x3c!-- /wp:${a} --\x3e`:`\x3c!-- wp:${a} ${n}/--\x3e`}function Ar(e){1===e.length&&Xe(e[0])&&(e=[]);let t=Br(e);return 1===e.length&&e[0].name===se()&&(t=(0,pr.removep)(t)),t}function Br(e,t){return(Array.isArray(e)?e:[e]).map((e=>function(e){let{isInnerBlocks:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e.isValid&&e.__unstableBlockSource)return gr(e.__unstableBlockSource);const r=e.name,n=xr(e);if(r===ue()||!t&&r===se())return n;const a=fe(r);if(!a)return n;const o=Cr(a,e.attributes);return Er(r,o,n)}(e,t))).join("\n\n")}var Sr=/[\t\n\f ]/,Nr=/[A-Za-z]/,Pr=/\r\n?/g;function Lr(e){return Sr.test(e)}function Mr(e){return Nr.test(e)}var jr=function(){function e(e,t){this.delegate=e,this.entityParser=t,this.state="beforeData",this.line=-1,this.column=-1,this.input="",this.index=-1,this.tagNameBuffer="",this.states={beforeData:function(){var e=this.peek();if("<"===e)this.transitionTo("tagOpen"),this.markTagStart(),this.consume();else{if("\n"===e){var t=this.tagNameBuffer.toLowerCase();"pre"!==t&&"textarea"!==t||this.consume()}this.transitionTo("data"),this.delegate.beginData()}},data:function(){var e=this.peek();"<"===e?(this.delegate.finishData(),this.transitionTo("tagOpen"),this.markTagStart(),this.consume()):"&"===e?(this.consume(),this.delegate.appendToData(this.consumeCharRef()||"&")):(this.consume(),this.delegate.appendToData(e))},tagOpen:function(){var e=this.consume();"!"===e?this.transitionTo("markupDeclarationOpen"):"/"===e?this.transitionTo("endTagOpen"):("@"===e||":"===e||Mr(e))&&(this.transitionTo("tagName"),this.tagNameBuffer="",this.delegate.beginStartTag(),this.appendToTagName(e))},markupDeclarationOpen:function(){"-"===this.consume()&&"-"===this.input.charAt(this.index)&&(this.consume(),this.transitionTo("commentStart"),this.delegate.beginComment())},commentStart:function(){var e=this.consume();"-"===e?this.transitionTo("commentStartDash"):">"===e?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData(e),this.transitionTo("comment"))},commentStartDash:function(){var e=this.consume();"-"===e?this.transitionTo("commentEnd"):">"===e?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData("-"),this.transitionTo("comment"))},comment:function(){var e=this.consume();"-"===e?this.transitionTo("commentEndDash"):this.delegate.appendToCommentData(e)},commentEndDash:function(){var e=this.consume();"-"===e?this.transitionTo("commentEnd"):(this.delegate.appendToCommentData("-"+e),this.transitionTo("comment"))},commentEnd:function(){var e=this.consume();">"===e?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData("--"+e),this.transitionTo("comment"))},tagName:function(){var e=this.consume();Lr(e)?this.transitionTo("beforeAttributeName"):"/"===e?this.transitionTo("selfClosingStartTag"):">"===e?(this.delegate.finishTag(),this.transitionTo("beforeData")):this.appendToTagName(e)},beforeAttributeName:function(){var e=this.peek();Lr(e)?this.consume():"/"===e?(this.transitionTo("selfClosingStartTag"),this.consume()):">"===e?(this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):"="===e?(this.delegate.reportSyntaxError("attribute name cannot start with equals sign"),this.transitionTo("attributeName"),this.delegate.beginAttribute(),this.consume(),this.delegate.appendToAttributeName(e)):(this.transitionTo("attributeName"),this.delegate.beginAttribute())},attributeName:function(){var e=this.peek();Lr(e)?(this.transitionTo("afterAttributeName"),this.consume()):"/"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"="===e?(this.transitionTo("beforeAttributeValue"),this.consume()):">"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):'"'===e||"'"===e||"<"===e?(this.delegate.reportSyntaxError(e+" is not a valid character within attribute names"),this.consume(),this.delegate.appendToAttributeName(e)):(this.consume(),this.delegate.appendToAttributeName(e))},afterAttributeName:function(){var e=this.peek();Lr(e)?this.consume():"/"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"="===e?(this.consume(),this.transitionTo("beforeAttributeValue")):">"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.transitionTo("attributeName"),this.delegate.beginAttribute(),this.consume(),this.delegate.appendToAttributeName(e))},beforeAttributeValue:function(){var e=this.peek();Lr(e)?this.consume():'"'===e?(this.transitionTo("attributeValueDoubleQuoted"),this.delegate.beginAttributeValue(!0),this.consume()):"'"===e?(this.transitionTo("attributeValueSingleQuoted"),this.delegate.beginAttributeValue(!0),this.consume()):">"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.transitionTo("attributeValueUnquoted"),this.delegate.beginAttributeValue(!1),this.consume(),this.delegate.appendToAttributeValue(e))},attributeValueDoubleQuoted:function(){var e=this.consume();'"'===e?(this.delegate.finishAttributeValue(),this.transitionTo("afterAttributeValueQuoted")):"&"===e?this.delegate.appendToAttributeValue(this.consumeCharRef()||"&"):this.delegate.appendToAttributeValue(e)},attributeValueSingleQuoted:function(){var e=this.consume();"'"===e?(this.delegate.finishAttributeValue(),this.transitionTo("afterAttributeValueQuoted")):"&"===e?this.delegate.appendToAttributeValue(this.consumeCharRef()||"&"):this.delegate.appendToAttributeValue(e)},attributeValueUnquoted:function(){var e=this.peek();Lr(e)?(this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("beforeAttributeName")):"/"===e?(this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"&"===e?(this.consume(),this.delegate.appendToAttributeValue(this.consumeCharRef()||"&")):">"===e?(this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.consume(),this.delegate.appendToAttributeValue(e))},afterAttributeValueQuoted:function(){var e=this.peek();Lr(e)?(this.consume(),this.transitionTo("beforeAttributeName")):"/"===e?(this.consume(),this.transitionTo("selfClosingStartTag")):">"===e?(this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):this.transitionTo("beforeAttributeName")},selfClosingStartTag:function(){">"===this.peek()?(this.consume(),this.delegate.markTagAsSelfClosing(),this.delegate.finishTag(),this.transitionTo("beforeData")):this.transitionTo("beforeAttributeName")},endTagOpen:function(){var e=this.consume();("@"===e||":"===e||Mr(e))&&(this.transitionTo("tagName"),this.tagNameBuffer="",this.delegate.beginEndTag(),this.appendToTagName(e))}},this.reset()}return e.prototype.reset=function(){this.transitionTo("beforeData"),this.input="",this.index=0,this.line=1,this.column=0,this.delegate.reset()},e.prototype.transitionTo=function(e){this.state=e},e.prototype.tokenize=function(e){this.reset(),this.tokenizePart(e),this.tokenizeEOF()},e.prototype.tokenizePart=function(e){for(this.input+=function(e){return e.replace(Pr,"\n")}(e);this.index<this.input.length;){var t=this.states[this.state];if(void 0===t)throw new Error("unhandled state "+this.state);t.call(this)}},e.prototype.tokenizeEOF=function(){this.flushData()},e.prototype.flushData=function(){"data"===this.state&&(this.delegate.finishData(),this.transitionTo("beforeData"))},e.prototype.peek=function(){return this.input.charAt(this.index)},e.prototype.consume=function(){var e=this.peek();return this.index++,"\n"===e?(this.line++,this.column=0):this.column++,e},e.prototype.consumeCharRef=function(){var e=this.input.indexOf(";",this.index);if(-1!==e){var t=this.input.slice(this.index,e),r=this.entityParser.parse(t);if(r){for(var n=t.length;n;)this.consume(),n--;return this.consume(),r}}},e.prototype.markTagStart=function(){this.delegate.tagOpen()},e.prototype.appendToTagName=function(e){this.tagNameBuffer+=e,this.delegate.appendToTagName(e)},e}(),Or=function(){function e(e,t){void 0===t&&(t={}),this.options=t,this.token=null,this.startLine=1,this.startColumn=0,this.tokens=[],this.tokenizer=new jr(this,e),this._currentAttribute=void 0}return e.prototype.tokenize=function(e){return this.tokens=[],this.tokenizer.tokenize(e),this.tokens},e.prototype.tokenizePart=function(e){return this.tokens=[],this.tokenizer.tokenizePart(e),this.tokens},e.prototype.tokenizeEOF=function(){return this.tokens=[],this.tokenizer.tokenizeEOF(),this.tokens[0]},e.prototype.reset=function(){this.token=null,this.startLine=1,this.startColumn=0},e.prototype.current=function(){var e=this.token;if(null===e)throw new Error("token was unexpectedly null");if(0===arguments.length)return e;for(var t=0;t<arguments.length;t++)if(e.type===arguments[t])return e;throw new Error("token type was unexpectedly "+e.type)},e.prototype.push=function(e){this.token=e,this.tokens.push(e)},e.prototype.currentAttribute=function(){return this._currentAttribute},e.prototype.addLocInfo=function(){this.options.loc&&(this.current().loc={start:{line:this.startLine,column:this.startColumn},end:{line:this.tokenizer.line,column:this.tokenizer.column}}),this.startLine=this.tokenizer.line,this.startColumn=this.tokenizer.column},e.prototype.beginData=function(){this.push({type:"Chars",chars:""})},e.prototype.appendToData=function(e){this.current("Chars").chars+=e},e.prototype.finishData=function(){this.addLocInfo()},e.prototype.beginComment=function(){this.push({type:"Comment",chars:""})},e.prototype.appendToCommentData=function(e){this.current("Comment").chars+=e},e.prototype.finishComment=function(){this.addLocInfo()},e.prototype.tagOpen=function(){},e.prototype.beginStartTag=function(){this.push({type:"StartTag",tagName:"",attributes:[],selfClosing:!1})},e.prototype.beginEndTag=function(){this.push({type:"EndTag",tagName:""})},e.prototype.finishTag=function(){this.addLocInfo()},e.prototype.markTagAsSelfClosing=function(){this.current("StartTag").selfClosing=!0},e.prototype.appendToTagName=function(e){this.current("StartTag","EndTag").tagName+=e},e.prototype.beginAttribute=function(){this._currentAttribute=["","",!1]},e.prototype.appendToAttributeName=function(e){this.currentAttribute()[0]+=e},e.prototype.beginAttributeValue=function(e){this.currentAttribute()[2]=e},e.prototype.appendToAttributeValue=function(e){this.currentAttribute()[1]+=e},e.prototype.finishAttributeValue=function(){this.current("StartTag").attributes.push(this._currentAttribute)},e.prototype.reportSyntaxError=function(e){this.current().syntaxError=e},e}();const zr=window.wp.deprecated;var Dr=r.n(zr);const Ir=window.wp.htmlEntities;function Vr(){function e(e){return function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a<r;a++)n[a-1]=arguments[a];return e("Block validation: "+t,...n)}}return{error:e(console.error),warning:e(console.warn),getItems:()=>[]}}function Hr(){const e=[],t=Vr();return{error(){for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];e.push({log:t.error,args:n})},warning(){for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];e.push({log:t.warning,args:n})},getItems:()=>e}}const Rr=/[\t\n\r\v\f ]+/g,$r=/^[\t\n\r\v\f ]*$/,Fr=/^url\s*\(['"\s]*(.*?)['"\s]*\)$/,Ur=["allowfullscreen","allowpaymentrequest","allowusermedia","async","autofocus","autoplay","checked","controls","default","defer","disabled","download","formnovalidate","hidden","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","typemustmatch"],qr=[...Ur,"autocapitalize","autocomplete","charset","contenteditable","crossorigin","decoding","dir","draggable","enctype","formenctype","formmethod","http-equiv","inputmode","kind","method","preload","scope","shape","spellcheck","translate","type","wrap"],Gr=[e=>e,function(e){return Xr(e).join(" ")}],Kr=/^[\da-z]+$/i,Wr=/^#\d+$/,Yr=/^#x[\da-f]+$/i;class Zr{parse(e){if(t=e,Kr.test(t)||Wr.test(t)||Yr.test(t))return(0,Ir.decodeEntities)("&"+e+";");var t}}function Xr(e){return e.trim().split(Rr)}function Qr(e){return e.attributes.filter((e=>{const[t,r]=e;return r||0===t.indexOf("data-")||(0,o.includes)(qr,t)}))}function Jr(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr(),n=e.chars,a=t.chars;for(let e=0;e<Gr.length;e++){const t=Gr[e];if(n=t(n),a=t(a),n===a)return!0}return r.warning("Expected text `%s`, saw `%s`.",t.chars,e.chars),!1}function en(e){return 0===parseFloat(e)?"0":0===e.indexOf(".")?"0"+e:e}function tn(e){return Xr(e).map(en).join(" ").replace(Fr,"url($1)")}function rn(e){const t=e.replace(/;?\s*$/,"").split(";").map((e=>{const[t,...r]=e.split(":"),n=r.join(":");return[t.trim(),tn(n.trim())]}));return Object.fromEntries(t)}const nn={class:(e,t)=>{const[r,n]=[e,t].map(Xr),a=r.filter((e=>!n.includes(e))),o=n.filter((e=>!r.includes(e)));return 0===a.length&&0===o.length},style:(e,t)=>(0,o.isEqual)(...[e,t].map(rn)),...Object.fromEntries(Ur.map((e=>[e,()=>!0])))};function an(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr();if(e.length!==t.length)return r.warning("Expected attributes %o, instead saw %o.",t,e),!1;const n={};for(let e=0;e<t.length;e++)n[t[e][0].toLowerCase()]=t[e][1];for(let t=0;t<e.length;t++){const[a,o]=e[t],i=a.toLowerCase();if(!n.hasOwnProperty(i))return r.warning("Encountered unexpected attribute `%s`.",a),!1;const s=n[i],l=nn[i];if(l){if(!l(o,s))return r.warning("Expected attribute `%s` of value `%s`, saw `%s`.",a,s,o),!1}else if(o!==s)return r.warning("Expected attribute `%s` of value `%s`, saw `%s`.",a,s,o),!1}return!0}const on={StartTag:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr();return e.tagName!==t.tagName&&e.tagName.toLowerCase()!==t.tagName.toLowerCase()?(r.warning("Expected tag name `%s`, instead saw `%s`.",t.tagName,e.tagName),!1):an(...[e,t].map(Qr),r)},Chars:Jr,Comment:Jr};function sn(e){let t;for(;t=e.shift();){if("Chars"!==t.type)return t;if(!$r.test(t.chars))return t}}function ln(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Vr();try{return new Or(new Zr).tokenize(e)}catch(r){t.warning("Malformed HTML detected: %s",e)}return null}function cn(e,t){return!!e.selfClosing&&!(!t||t.tagName!==e.tagName||"EndTag"!==t.type)}function un(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr();if(e===t)return!0;const[n,a]=[e,t].map((e=>ln(e,r)));if(!n||!a)return!1;let o,i;for(;o=sn(n);){if(i=sn(a),!i)return r.warning("Expected end of content, instead saw %o.",o),!1;if(o.type!==i.type)return r.warning("Expected token of type `%s` (%o), instead saw `%s` (%o).",i.type,i,o.type,o),!1;const e=on[o.type];if(e&&!e(o,i,r))return!1;cn(o,a[0])?sn(a):cn(i,n[0])&&sn(n)}return!(i=sn(a))||(r.warning("Expected %o, instead saw end of content.",i),!1)}function dn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.name;const r=e.name===se()||e.name===ue();if(r)return[!0,[]];const n=Hr(),a=et(t);let o;try{o=Tr(a,e.attributes)}catch(e){return n.error("Block validation failed because an error occurred while generating block content:\n\n%s",e.toString()),[!1,n.getItems()]}const i=un(e.originalContent,o,n);return i||n.error("Block validation failed for `%s` (%o).\n\nContent generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",a.name,a,o,e.originalContent),[i,n.getItems()]}function pn(e,t,r){Dr()("isValidBlockContent introduces opportunity for data loss",{since:"12.6",plugin:"Gutenberg",alternative:"validateBlock"});const n=et(e),a={name:n.name,attributes:t,innerBlocks:[],originalContent:r},[o]=dn(a,n);return o}function hn(e,t){const r={...t};if("core/cover-image"===e&&(e="core/cover"),"core/text"!==e&&"core/cover-text"!==e||(e="core/paragraph"),e&&0===e.indexOf("core/social-link-")&&(r.service=e.substring(17),e="core/social-link"),e&&0===e.indexOf("core-embed/")){const t=e.substring(11),n={speaker:"speaker-deck",polldaddy:"crowdsignal"};r.providerNameSlug=t in n?n[t]:t,["amazon-kindle","wordpress"].includes(t)||(r.responsive=!0),e="core/embed"}if("core/post-comment-author"===e&&(e="core/comment-author-name"),"core/post-comment-content"===e&&(e="core/comment-content"),"core/post-comment-date"===e&&(e="core/comment-date"),"core/comments-query-loop"===e){e="core/comments";const{className:t=""}=r;t.includes("wp-block-comments-query-loop")||(r.className=["wp-block-comments-query-loop",t].join(" "))}return"core/post-comments"===e&&(e="core/comments",r.legacy=!0),[e,r]}function fn(e,t){for(var r,n=t.split(".");r=n.shift();){if(!(r in e))return;e=e[r]}return e}var gn,mn=function(){return gn||(gn=document.implementation.createHTMLDocument("")),gn};function bn(e,t){if(t){if("string"==typeof e){var r=mn();r.body.innerHTML=e,e=r.body}if("function"==typeof t)return t(e);if(Object===t.constructor)return Object.keys(t).reduce((function(r,n){return r[n]=bn(e,t[n]),r}),{})}}function kn(e,t){return 1===arguments.length&&(t=e,e=void 0),function(r){var n=r;if(e&&(n=r.querySelector(e)),n)return fn(n,t)}}var wn=r(9756);function yn(e){const t={};for(let r=0;r<e.length;r++){const{name:n,value:a}=e[r];t[n]=a}return t}function vn(e){if(e.nodeType===e.TEXT_NODE)return e.nodeValue;if(e.nodeType!==e.ELEMENT_NODE)throw new TypeError("A block node can only be created from a node of type text or element.");return{type:e.nodeName.toLowerCase(),props:{...yn(e.attributes),children:xn(e.childNodes)}}}function Tn(e){return t=>{let r=t;e&&(r=t.querySelector(e));try{return vn(r)}catch(e){return null}}}const Cn={isNodeOfType:function(e,t){return e&&e.type===t},fromDOM:vn,toHTML:function(e){return En([e])},matcher:Tn};function xn(e){const t=[];for(let r=0;r<e.length;r++)try{t.push(vn(e[r]))}catch(e){}return t}function En(e){const t=e;return(0,z.renderToString)(t)}function An(e){return t=>{let r=t;return e&&(r=t.querySelector(e)),r?xn(r.childNodes):[]}}const Bn={concat:function(){const e=[];for(let t=0;t<arguments.length;t++){const r=(0,o.castArray)(t<0||arguments.length<=t?void 0:arguments[t]);for(let t=0;t<r.length;t++){const n=r[t];"string"==typeof n&&"string"==typeof e[e.length-1]?e[e.length-1]+=n:e.push(n)}}return e},getChildrenArray:function(e){return e},fromDOM:xn,toHTML:En,matcher:An};function Sn(e,t,r,n){let a;switch(t.source){case void 0:a=n?n[e]:void 0;break;case"attribute":case"property":case"html":case"text":case"children":case"node":case"query":case"tag":a=Ln(r,t)}return function(e,t){return void 0===t||function(e,t){return t.some((t=>function(e,t){switch(t){case"string":return"string"==typeof e;case"boolean":return"boolean"==typeof e;case"object":return!!e&&e.constructor===Object;case"null":return null===e;case"array":return Array.isArray(e);case"integer":case"number":return"number"==typeof e}return!0}(e,t)))}(e,(0,o.castArray)(t))}(a,t.type)&&function(e,t){return!Array.isArray(t)||t.includes(e)}(a,t.enum)||(a=void 0),void 0===a&&(a=t.default),a}const Nn=r.n(wn)()((e=>{switch(e.source){case"attribute":let n=function(e,t){return 1===arguments.length&&(t=e,e=void 0),function(r){var n=kn(e,"attributes")(r);if(n&&n.hasOwnProperty(t))return n[t].value}}(e.selector,e.attribute);return"boolean"===e.type&&(n=(e=>(0,o.flow)([e,e=>void 0!==e]))(n)),n;case"html":return t=e.selector,r=e.multiline,e=>{let n=e;if(t&&(n=e.querySelector(t)),!n)return"";if(r){let e="";const t=n.children.length;for(let a=0;a<t;a++){const t=n.children[a];t.nodeName.toLowerCase()===r&&(e+=t.outerHTML)}return e}return n.innerHTML};case"text":return function(e){return kn(e,"textContent")}(e.selector);case"children":return An(e.selector);case"node":return Tn(e.selector);case"query":const a=(0,o.mapValues)(e.query,Nn);return function(e,t){return function(r){var n=r.querySelectorAll(e);return[].map.call(n,(function(e){return bn(e,t)}))}}(e.selector,a);case"tag":return(0,o.flow)([kn(e.selector,"nodeName"),e=>e?e.toLowerCase():void 0]);default:console.error(`Unknown source type "${e.source}"`)}var t,r}));function Pn(e){return bn(e,(e=>e))}function Ln(e,t){return Nn(t)(Pn(e))}function Mn(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=Pn(t),a=et(e),i=(0,o.mapValues)(a.attributes,((e,t)=>Sn(t,e,n,r)));return(0,ze.applyFilters)("blocks.getBlockAttributes",i,a,t,r)}const jn={type:"string",source:"attribute",selector:"[data-custom-class-name] > *",attribute:"class"};function On(e){const t=Ln(`<div data-custom-class-name>${e}</div>`,jn);return t?t.trim().split(/\s+/):[]}function zn(e,t){const r=function(e,t,r){if(be(t,"customClassName",!0)){const{className:n,...a}=e,o=Tr(t,a),i=On(o),s=On(r).filter((e=>!i.includes(e)));s.length?e.className=s.join(" "):o&&delete e.className}return e}(e.attributes,t,e.originalContent);return{...e,attributes:r}}function Dn(){return!1}function In(e,t){let r=function(e,t){const r=se(),n=e.blockName||se(),a=e.attrs||{},o=e.innerBlocks||[];let i=e.innerHTML.trim();return n!==r||null!=t&&t.__unstableSkipAutop||(i=(0,pr.autop)(i).trim()),{...e,blockName:n,attrs:a,innerHTML:i,innerBlocks:o}}(e,t);r=function(e){const[t,r]=hn(e.blockName,e.attrs);return{...e,blockName:t,attrs:r}}(r);let n=fe(r.blockName);n||(r=function(e){const t=ue()||se(),r=gr(e,{isCommentDelimited:!1}),n=gr(e,{isCommentDelimited:!0});return{blockName:t,attrs:{originalName:e.blockName,originalContent:n,originalUndelimitedContent:r},innerHTML:e.blockName?n:e.innerHTML,innerBlocks:e.innerBlocks,innerContent:e.innerContent}}(r),n=fe(r.blockName));const a=r.blockName===se()||r.blockName===ue();if(!n||!r.innerHTML&&a)return;const i=r.innerBlocks.map((e=>In(e,t))).filter((e=>!!e)),s=De(r.blockName,Mn(n,r.innerHTML,r.attrs),i);s.originalContent=r.innerHTML;const l=function(e,t){const[r]=dn(e,t);if(r)return{...e,isValid:r,validationIssues:[]};const n=zn(e,t),[a,o]=dn(e,t);return{...n,isValid:a,validationIssues:o}}(s,n),{validationIssues:c}=l,u=function(e,t,r){const n=t.attrs,{deprecated:a}=r;if(!a||!a.length)return e;for(let t=0;t<a.length;t++){const{isEligible:i=Dn}=a[t];if(e.isValid&&!i(n,e.innerBlocks))continue;const s=Object.assign(ot(r,V),a[t]);let l={...e,attributes:Mn(s,e.originalContent,n)},[c]=dn(l,s);if(c||(l=zn(l,s),[c]=dn(l,s)),!c)continue;let u=l.innerBlocks,d=l.attributes;const{migrate:p}=s;p&&([d=n,u=e.innerBlocks]=(0,o.castArray)(p(d,e.innerBlocks))),e={...e,attributes:d,innerBlocks:u,isValid:!0,validationIssues:[]}}return e}(l,r,n);return u.isValid||(u.__unstableBlockSource=e),l.isValid||!u.isValid||null!=t&&t.__unstableSkipMigrationLogs?l.isValid||u.isValid||c.forEach((e=>{let{log:t,args:r}=e;return t(...r)})):(console.groupCollapsed("Updated Block: %s",n.name),console.info("Block successfully updated for `%s` (%o).\n\nNew content generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",n.name,n,Tr(n,u.attributes),u.originalContent),console.groupEnd()),u}function Vn(e,t){return(0,dr.parse)(e).reduce(((e,r)=>{const n=In(r,t);return n&&e.push(n),e}),[])}function Hn(){return Ge("from").filter((e=>{let{type:t}=e;return"raw"===t})).map((e=>e.isMatch?e:{...e,isMatch:t=>e.selector&&t.matches(e.selector)}))}function Rn(e,t){const r=document.implementation.createHTMLDocument("");return r.body.innerHTML=e,Array.from(r.body.children).flatMap((e=>{const r=qe(Hn(),(t=>{let{isMatch:r}=t;return r(e)}));if(!r)return De("core/html",Mn("core/html",e.outerHTML));const{transform:n,blockName:a}=r;return n?n(e,t):De(a,Mn(a,e.outerHTML))}))}function $n(e){const t=document.implementation.createHTMLDocument(""),r=document.implementation.createHTMLDocument(""),n=t.body,a=r.body;for(n.innerHTML=e;n.firstChild;){const e=n.firstChild;e.nodeType===e.TEXT_NODE?(0,D.isEmpty)(e)?n.removeChild(e):(a.lastChild&&"P"===a.lastChild.nodeName||a.appendChild(r.createElement("P")),a.lastChild.appendChild(e)):e.nodeType===e.ELEMENT_NODE?"BR"===e.nodeName?(e.nextSibling&&"BR"===e.nextSibling.nodeName&&(a.appendChild(r.createElement("P")),n.removeChild(e.nextSibling)),a.lastChild&&"P"===a.lastChild.nodeName&&a.lastChild.hasChildNodes()?a.lastChild.appendChild(e):n.removeChild(e)):"P"===e.nodeName?(0,D.isEmpty)(e)?n.removeChild(e):a.appendChild(e):(0,D.isPhrasingContent)(e)?(a.lastChild&&"P"===a.lastChild.nodeName||a.appendChild(r.createElement("P")),a.lastChild.appendChild(e)):a.appendChild(e):n.removeChild(e)}return a.innerHTML}function Fn(e,t){e.nodeType===e.COMMENT_NODE&&("nextpage"!==e.nodeValue?0===e.nodeValue.indexOf("more")&&function(e,t){const r=e.nodeValue.slice(4).trim();let n=e,a=!1;for(;n=n.nextSibling;)if(n.nodeType===n.COMMENT_NODE&&"noteaser"===n.nodeValue){a=!0,(0,D.remove)(n);break}const o=function(e,t,r){const n=r.createElement("wp-block");return n.dataset.block="core/more",e&&(n.dataset.customText=e),t&&(n.dataset.noTeaser=""),n}(r,a,t);if(e.parentNode&&"P"===e.parentNode.nodeName&&1!==e.parentNode.childNodes.length){const r=Array.from(e.parentNode.childNodes),n=r.indexOf(e),a=e.parentNode.parentNode||t.body,i=(e,r)=>(e||(e=t.createElement("p")),e.appendChild(r),e);[r.slice(0,n).reduce(i,null),o,r.slice(n+1).reduce(i,null)].forEach((t=>t&&a.insertBefore(t,e.parentNode))),(0,D.remove)(e.parentNode)}else(0,D.replace)(e,o)}(e,t):(0,D.replace)(e,function(e){const t=e.createElement("wp-block");return t.dataset.block="core/nextpage",t}(t)))}function Un(e){return"OL"===e.nodeName||"UL"===e.nodeName}function qn(e){if(!Un(e))return;const t=e,r=e.previousElementSibling;if(r&&r.nodeName===e.nodeName&&1===t.children.length){for(;t.firstChild;)r.appendChild(t.firstChild);t.parentNode.removeChild(t)}const n=e.parentNode;if(n&&"LI"===n.nodeName&&1===n.children.length&&!/\S/.test((a=n,Array.from(a.childNodes).map((e=>{let{nodeValue:t=""}=e;return t})).join("")))){const e=n,r=e.previousElementSibling,a=e.parentNode;r?(r.appendChild(t),a.removeChild(e)):(a.parentNode.insertBefore(t,a),a.parentNode.removeChild(a))}var a;if(n&&Un(n)){const t=e.previousElementSibling;t?t.appendChild(e):(0,D.unwrap)(e)}}function Gn(e){"BLOCKQUOTE"===e.nodeName&&(e.innerHTML=$n(e.innerHTML))}function Kn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;const r=e.ownerDocument.createElement("figure");t.parentNode.insertBefore(r,t),r.appendChild(e)}function Wn(e,t,r){if(!function(e,t){var r,n;const a=e.nodeName.toLowerCase();return"figcaption"!==a&&!(0,D.isTextContent)(e)&&a in(null!==(r=null==t||null===(n=t.figure)||void 0===n?void 0:n.children)&&void 0!==r?r:{})}(e,r))return;let n=e;const a=e.parentNode;(function(e,t){var r,n,a,o;return e.nodeName.toLowerCase()in(null!==(r=null==t||null===(n=t.figure)||void 0===n||null===(a=n.children)||void 0===a||null===(o=a.a)||void 0===o?void 0:o.children)&&void 0!==r?r:{})})(e,r)&&"A"===a.nodeName&&1===a.childNodes.length&&(n=e.parentNode);const o=n.closest("p,div");o?e.classList?(e.classList.contains("alignright")||e.classList.contains("alignleft")||e.classList.contains("aligncenter")||!o.textContent.trim())&&Kn(n,o):Kn(n,o):"BODY"===n.parentNode.nodeName&&Kn(n)}const Yn=window.wp.shortcode,Zn=e=>Array.isArray(e)?e:[e],Xn=function e(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const a=Ge("from"),o=qe(a,(e=>-1===n.indexOf(e.blockName)&&"shortcode"===e.type&&Zn(e.tag).some((e=>(0,Yn.regexp)(e).test(t)))));if(!o)return[t];const i=Zn(o.tag),s=i.find((e=>(0,Yn.regexp)(e).test(t)));let l;const c=r;if(l=(0,Yn.next)(s,t,r)){var u;r=l.index+l.content.length;const a=t.substr(0,l.index),i=t.substr(r);if(!(null!==(u=l.shortcode.content)&&void 0!==u&&u.includes("<")||/(\n|<p>)\s*$/.test(a)&&/^\s*(\n|<\/p>)/.test(i)))return e(t,r);if(o.isMatch&&!o.isMatch(l.shortcode.attrs))return e(t,c,[...n,o.blockName]);let s=[];if("function"==typeof o.transform)s=[].concat(o.transform(l.shortcode.attrs,l)),s=s.map((e=>(e.originalContent=l.shortcode.content,zn(e,fe(e.name)))));else{const e=Object.fromEntries(Object.entries(o.attributes).filter((e=>{let[,t]=e;return t.shortcode})).map((e=>{let[t,r]=e;return[t,r.shortcode(l.shortcode.attrs,l)]}))),r=fe(o.blockName);if(!r)return[t];const n={...r,attributes:o.attributes};let a=De(o.blockName,Mn(n,l.shortcode.content,e));a.originalContent=l.shortcode.content,a=zn(a,n),s=[a]}return[...e(a),...s,...e(i)]}return[t]};function Qn(e){return function(e,t){const r={phrasingContentSchema:(0,D.getPhrasingContentSchema)(t),isPaste:"paste"===t},n=e.map((e=>{let{isMatch:t,blockName:n,schema:a}=e;const i=be(n,"anchor");return a="function"==typeof a?a(r):a,i||t?(0,o.mapValues)(a,(e=>{let r=e.attributes||[];return i&&(r=[...r,"id"]),{...e,attributes:r,isMatch:t||void 0}})):a}));return(0,o.mergeWith)({},...n,((e,t,r)=>{switch(r){case"children":return"*"===e||"*"===t?"*":{...e,...t};case"attributes":case"require":return[...e||[],...t||[]];case"isMatch":if(!e||!t)return;return function(){return e(...arguments)||t(...arguments)}}}))}(Hn(),e)}function Jn(e,t,r,n){Array.from(e).forEach((e=>{Jn(e.childNodes,t,r,n),t.forEach((t=>{r.contains(e)&&t(e,r,n)}))}))}function ea(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;const n=document.implementation.createHTMLDocument("");return n.body.innerHTML=e,Jn(n.body.childNodes,t,n,r),n.body.innerHTML}function ta(e,t){const r=e[`${t}Sibling`];if(r&&(0,D.isPhrasingContent)(r))return r;const{parentNode:n}=e;return n&&(0,D.isPhrasingContent)(n)?ta(n,t):void 0}function ra(e){return Dr()("wp.blocks.getPhrasingContentSchema",{since:"5.6",alternative:"wp.dom.getPhrasingContentSchema"}),(0,D.getPhrasingContentSchema)(e)}function na(e){let{HTML:t=""}=e;if(-1!==t.indexOf("\x3c!-- wp:"))return Vn(t);const r=Xn(t),n=Qn();return r.map((e=>"string"!=typeof e?e:Rn(e=$n(e=ea(e,[qn,Fn,Wn,Gn],n)),na))).flat().filter(Boolean)}function aa(e){e.nodeType===e.COMMENT_NODE&&(0,D.remove)(e)}function oa(e,t){return e.every((e=>function(e,t){if((0,D.isTextContent)(e))return!0;if(!t)return!1;const r=e.nodeName.toLowerCase();return[["ul","li","ol"],["h1","h2","h3","h4","h5","h6"]].some((e=>0===[r,t].filter((t=>!e.includes(t))).length))}(e,t)&&oa(Array.from(e.children),t)))}function ia(e){return"BR"===e.nodeName&&e.previousSibling&&"BR"===e.previousSibling.nodeName}function sa(e,t){if("SPAN"===e.nodeName&&e.style){const{fontWeight:r,fontStyle:n,textDecorationLine:a,textDecoration:o,verticalAlign:i}=e.style;"bold"!==r&&"700"!==r||(0,D.wrap)(t.createElement("strong"),e),"italic"===n&&(0,D.wrap)(t.createElement("em"),e),("line-through"===a||o.includes("line-through"))&&(0,D.wrap)(t.createElement("s"),e),"super"===i?(0,D.wrap)(t.createElement("sup"),e):"sub"===i&&(0,D.wrap)(t.createElement("sub"),e)}else"B"===e.nodeName?e=(0,D.replaceTag)(e,"strong"):"I"===e.nodeName?e=(0,D.replaceTag)(e,"em"):"A"===e.nodeName&&(e.target&&"_blank"===e.target.toLowerCase()?e.rel="noreferrer noopener":(e.removeAttribute("target"),e.removeAttribute("rel")),e.name&&!e.id&&(e.id=e.name),e.id&&!e.ownerDocument.querySelector(`[href="#${e.id}"]`)&&e.removeAttribute("id"))}function la(e){"SCRIPT"!==e.nodeName&&"NOSCRIPT"!==e.nodeName&&"TEMPLATE"!==e.nodeName&&"STYLE"!==e.nodeName||e.parentNode.removeChild(e)}const{parseInt:ca}=window;function ua(e){return"OL"===e.nodeName||"UL"===e.nodeName}function da(e,t){if("P"!==e.nodeName)return;const r=e.getAttribute("style");if(!r)return;if(-1===r.indexOf("mso-list"))return;const n=/mso-list\s*:[^;]+level([0-9]+)/i.exec(r);if(!n)return;let a=ca(n[1],10)-1||0;const o=e.previousElementSibling;if(!o||!ua(o)){const r=e.textContent.trim().slice(0,1),n=/[1iIaA]/.test(r),a=t.createElement(n?"ol":"ul");n&&a.setAttribute("type",r),e.parentNode.insertBefore(a,e)}const i=e.previousElementSibling,s=i.nodeName,l=t.createElement("li");let c=i;for(e.removeChild(e.firstChild);e.firstChild;)l.appendChild(e.firstChild);for(;a--;)c=c.lastChild||c,ua(c)&&(c=c.lastChild||c);ua(c)||(c=c.appendChild(t.createElement(s))),c.appendChild(l),e.parentNode.removeChild(e)}const pa=window.wp.blob,{atob:ha,File:fa}=window;function ga(e){if("IMG"===e.nodeName){if(0===e.src.indexOf("file:")&&(e.src=""),0===e.src.indexOf("data:")){const[t,r]=e.src.split(","),[n]=t.slice(5).split(";");if(!r||!n)return void(e.src="");let a;try{a=ha(r)}catch(t){return void(e.src="")}const o=new Uint8Array(a.length);for(let e=0;e<o.length;e++)o[e]=a.charCodeAt(e);const i=n.replace("/","."),s=new fa([o],i,{type:n});e.src=(0,pa.createBlobURL)(s)}1!==e.height&&1!==e.width||e.parentNode.removeChild(e)}}function ma(e){"DIV"===e.nodeName&&(e.innerHTML=$n(e.innerHTML))}var ba=r(7308);const _a=new(r.n(ba)().Converter)({noHeaderId:!0,tables:!0,literalMidWordUnderscores:!0,omitExtraWLInCodeBlocks:!0,simpleLineBreaks:!0,strikethrough:!0});function ka(e){if("IFRAME"===e.nodeName){const t=e.ownerDocument.createTextNode(e.src);e.parentNode.replaceChild(t,e)}}function wa(e){e.id&&0===e.id.indexOf("docs-internal-guid-")&&(0,D.unwrap)(e)}function ya(e){if(e.nodeType!==e.TEXT_NODE)return;let t=e;for(;t=t.parentNode;)if(t.nodeType===t.ELEMENT_NODE&&"PRE"===t.nodeName)return;let r=e.data.replace(/[ \r\n\t]+/g," ");if(" "===r[0]){const t=ta(e,"previous");t&&"BR"!==t.nodeName&&" "!==t.textContent.slice(-1)||(r=r.slice(1))}if(" "===r[r.length-1]){const t=ta(e,"next");(!t||"BR"===t.nodeName||t.nodeType===t.TEXT_NODE&&(" "===(n=t.textContent[0])||"\r"===n||"\n"===n||"\t"===n))&&(r=r.slice(0,-1))}var n;r?e.data=r:e.parentNode.removeChild(e)}function va(e){"BR"===e.nodeName&&(ta(e,"next")||e.parentNode.removeChild(e))}function Ta(e){"P"===e.nodeName&&(e.hasChildNodes()||e.parentNode.removeChild(e))}function Ca(e){if("SPAN"!==e.nodeName)return;if("paragraph-break"!==e.getAttribute("data-stringify-type"))return;const{parentNode:t}=e;t.insertBefore(e.ownerDocument.createElement("br"),e),t.insertBefore(e.ownerDocument.createElement("br"),e),t.removeChild(e)}const{console:xa}=window;function Ea(e,t){return e=ea(e,[wa,sa,aa]),e=(0,D.removeInvalidHTML)(e,(0,D.getPhrasingContentSchema)("paste"),{inline:!0}),t||(e=ea(e,[ya,va])),xa.log("Processed inline HTML:\n\n",e),e}function Aa(e){let{HTML:t="",plainText:r="",mode:n="AUTO",tagName:a,preserveWhiteSpace:o}=e;if(t=t.replace(/<meta[^>]+>/g,""),t=t.replace(/^\s*<html[^>]*>\s*<body[^>]*>(?:\s*<!--\s*StartFragment\s*-->)?/i,""),t=t.replace(/(?:<!--\s*EndFragment\s*-->\s*)?<\/body>\s*<\/html>\s*$/i,""),"INLINE"!==n){const e=t||r;if(-1!==e.indexOf("\x3c!-- wp:"))return Vn(e)}var i;if(String.prototype.normalize&&(t=t.normalize()),!r||t&&!function(e){return!/<(?!br[ />])/i.test(e)}(t)||(t=r,/^\s+$/.test(r)||(i=t,t=_a.makeHtml(function(e){return e.replace(/((?:^|\n)```)([^\n`]+)(```(?:$|\n))/,((e,t,r,n)=>`${t}\n${r}\n${n}`))}(i))),"AUTO"===n&&-1===r.indexOf("\n")&&0!==r.indexOf("<p>")&&0===t.indexOf("<p>")&&(n="INLINE")),"INLINE"===n)return Ea(t,o);t=ea(t,[Ca]);const s=Xn(t),l=s.length>1;if("AUTO"===n&&!l&&function(e,t){const r=document.implementation.createHTMLDocument("");r.body.innerHTML=e;const n=Array.from(r.body.children);return!n.some(ia)&&oa(n,t)}(t,a))return Ea(t,o);const c=(0,D.getPhrasingContentSchema)("paste"),u=Qn("paste"),d=s.map((e=>{if("string"!=typeof e)return e;const t=[wa,da,la,qn,ga,sa,Fn,aa,ka,Wn,Gn,ma],r={...u,...c};return e=ea(e,t,u),e=ea(e=$n(e=(0,D.removeInvalidHTML)(e,r)),[ya,va,Ta],u),xa.log("Processed HTML piece:\n\n",e),Rn(e,Aa)})).flat().filter(Boolean);if("AUTO"===n&&1===d.length&&be(d[0].name,"__unstablePasteTextInline",!1)){const e=/^[\n]+|[\n]+$/g,t=r.replace(e,"");if(""!==t&&-1===t.indexOf("\n"))return(0,D.removeInvalidHTML)(xr(d[0]),c).replace(e,"")}return d}function Ba(){return(0,a.select)(ur).getCategories()}function Sa(e){(0,a.dispatch)(ur).setCategories(e)}function Na(e,t){(0,a.dispatch)(ur).updateCategory(e,t)}function Pa(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length===t.length&&t.every(((t,r)=>{let[n,,a]=t;const o=e[r];return n===o.name&&Pa(o.innerBlocks,a)}))}function La(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return t?t.map(((t,r)=>{var n;let[a,o,i]=t;const s=e[r];if(s&&s.name===a){const e=La(s.innerBlocks,i);return{...s,innerBlocks:e}}const l=fe(a),c=(e,t)=>t?Object.fromEntries(Object.entries(t).map((t=>{let[r,n]=t;return[r,u(e[r],n)]}))):{},u=(e,t)=>{return"html"===(null==(r=e)?void 0:r.source)&&Array.isArray(t)?(0,z.renderToString)(t):(e=>"query"===(null==e?void 0:e.source))(e)&&t?t.map((t=>c(e.query,t))):t;var r},d=c(null!==(n=null==l?void 0:l.attributes)&&void 0!==n?n:{},o);let[p,h]=hn(a,d);return void 0===fe(p)&&(h={originalName:a,originalContent:"",originalUndelimitedContent:""},p="core/missing"),De(p,h,La([],i))})):e}function Ma(e){return Dr()("wp.blocks.withBlockContentContext",{since:"6.1"}),e}})(),(window.wp=window.wp||{}).blocks=n})();
|
14 |
//# sourceMappingURL=index.min.js.map
|
10 |
/* translators: accessibility text. %1: The block title. %2: The block label. */
|
11 |
(0,i.__)("%1$s Block. %2$s"),a,o):(0,i.sprintf)(
|
12 |
/* translators: accessibility text. %s: The block title. */
|
13 |
+
(0,i.__)("%s Block"),a)}function nt(e,t){const r=fe(e);if(void 0===r)throw new Error(`Block type '${e}' is not registered.`);return(0,o.reduce)(r.attributes,((e,r,n)=>{const a=t[n];return void 0!==a?e[n]=a:r.hasOwnProperty("default")&&(e[n]=r.default),-1!==["node","children"].indexOf(r.source)&&("string"==typeof e[n]?e[n]=[e[n]]:Array.isArray(e[n])||(e[n]=[])),e}),{})}function at(e,t){var r;const n=null===(r=fe(e))||void 0===r?void 0:r.attributes;if(!n)return[];const a=Object.keys(n);return t?a.filter((e=>{var r;return(null===(r=n[e])||void 0===r?void 0:r.__experimentalRole)===t})):a}function ot(e,t){return Object.fromEntries(Object.entries(e).filter((e=>{let[r]=e;return!t.includes(r)})))}const it=[{slug:"text",title:(0,i.__)("Text")},{slug:"media",title:(0,i.__)("Media")},{slug:"design",title:(0,i.__)("Design")},{slug:"widgets",title:(0,i.__)("Widgets")},{slug:"theme",title:(0,i.__)("Theme")},{slug:"embed",title:(0,i.__)("Embeds")},{slug:"reusable",title:(0,i.__)("Reusable blocks")}];function st(e){return e.reduce(((e,t)=>({...e,[t.name]:t})),{})}function lt(e){return e.reduce(((e,t)=>(e.some((e=>e.name===t.name))||e.push(t),e)),[])}function ct(e){return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1?arguments[1]:void 0;switch(r.type){case"REMOVE_BLOCK_TYPES":return-1!==r.names.indexOf(t)?null:t;case e:return r.name||null}return t}}const ut=ct("SET_DEFAULT_BLOCK_NAME"),dt=ct("SET_FREEFORM_FALLBACK_BLOCK_NAME"),pt=ct("SET_UNREGISTERED_FALLBACK_BLOCK_NAME"),ht=ct("SET_GROUPING_BLOCK_NAME"),ft=(0,a.combineReducers)({unprocessedBlockTypes:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_UNPROCESSED_BLOCK_TYPE":return{...e,[t.blockType.name]:t.blockType};case"REMOVE_BLOCK_TYPES":return ot(e,t.names)}return e},blockTypes:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_TYPES":return{...e,...st(t.blockTypes)};case"REMOVE_BLOCK_TYPES":return ot(e,t.names)}return e},blockStyles:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_TYPES":return{...e,...(0,o.mapValues)(st(t.blockTypes),(t=>lt([...(0,o.get)(t,["styles"],[]).map((e=>({...e,source:"block"}))),...(0,o.get)(e,[t.name],[]).filter((e=>{let{source:t}=e;return"block"!==t}))])))};case"ADD_BLOCK_STYLES":return{...e,[t.blockName]:lt([...(0,o.get)(e,[t.blockName],[]),...t.styles])};case"REMOVE_BLOCK_STYLES":return{...e,[t.blockName]:(0,o.filter)((0,o.get)(e,[t.blockName],[]),(e=>-1===t.styleNames.indexOf(e.name)))}}return e},blockVariations:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_TYPES":return{...e,...(0,o.mapValues)(st(t.blockTypes),(t=>lt([...(0,o.get)(t,["variations"],[]).map((e=>({...e,source:"block"}))),...(0,o.get)(e,[t.name],[]).filter((e=>{let{source:t}=e;return"block"!==t}))])))};case"ADD_BLOCK_VARIATIONS":return{...e,[t.blockName]:lt([...(0,o.get)(e,[t.blockName],[]),...t.variations])};case"REMOVE_BLOCK_VARIATIONS":return{...e,[t.blockName]:(0,o.filter)((0,o.get)(e,[t.blockName],[]),(e=>-1===t.variationNames.indexOf(e.name)))}}return e},defaultBlockName:ut,freeformFallbackBlockName:dt,unregisteredFallbackBlockName:pt,groupingBlockName:ht,categories:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:it,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_CATEGORIES":return t.categories||[];case"UPDATE_CATEGORY":if(!t.category||(0,o.isEmpty)(t.category))return e;if((0,o.find)(e,["slug",t.slug]))return(0,o.map)(e,(e=>e.slug===t.slug?{...e,...t.category}:e))}return e},collections:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_BLOCK_COLLECTION":return{...e,[t.namespace]:{title:t.title,icon:t.icon}};case"REMOVE_BLOCK_COLLECTION":return ot(e,t.namespace)}return e}});var gt={};function mt(e){return[e]}function bt(e,t,r){var n;if(e.length!==t.length)return!1;for(n=r;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function _t(e,t){var r,n=t||mt;function a(e){var t,n,a,o,i,s=r,l=!0;for(t=0;t<e.length;t++){if(!(i=n=e[t])||"object"!=typeof i){l=!1;break}s.has(n)?s=s.get(n):(a=new WeakMap,s.set(n,a),s=a)}return s.has(gt)||((o=function(){var e={clear:function(){e.head=null}};return e}()).isUniqueByDependants=l,s.set(gt,o)),s.get(gt)}function o(){r=new WeakMap}function i(){var t,r,o,i,s,l=arguments.length;for(i=new Array(l),o=0;o<l;o++)i[o]=arguments[o];for((t=a(s=n.apply(null,i))).isUniqueByDependants||(t.lastDependants&&!bt(s,t.lastDependants,0)&&t.clear(),t.lastDependants=s),r=t.head;r;){if(bt(r.args,i,1))return r!==t.head&&(r.prev.next=r.next,r.next&&(r.next.prev=r.prev),r.next=t.head,r.prev=null,t.head.prev=r,t.head=r),r.val;r=r.next}return r={val:e.apply(null,i)},i[0]=null,r.args=i,t.head&&(t.head.prev=r,r.next=t.head),t.head=r,r.val}return i.getDependants=n,i.clear=o,o(),i}var kt=r(4793),wt=r.n(kt);const yt=(e,t)=>"string"==typeof t?Ct(e,t):t;function vt(e){return e.unprocessedBlockTypes}const Tt=_t((e=>Object.values(e.blockTypes)),(e=>[e.blockTypes]));function Ct(e,t){return e.blockTypes[t]}function xt(e,t){return e.blockStyles[t]}const Et=_t(((e,t,r)=>{const n=e.blockVariations[t];return n&&r?n.filter((e=>(e.scope||["block","inserter"]).includes(r))):n}),((e,t)=>[e.blockVariations[t]]));function At(e,t,r,n){const a=Et(e,t,n);return null==a?void 0:a.find((n=>{var a;if(Array.isArray(n.isActive)){const a=Ct(e,t),o=Object.keys((null==a?void 0:a.attributes)||{}),i=n.isActive.filter((e=>o.includes(e)));return 0!==i.length&&i.every((e=>r[e]===n.attributes[e]))}return null===(a=n.isActive)||void 0===a?void 0:a.call(n,r,n.attributes)}))}function Bt(e,t,r){const n=Et(e,t,r);return[...n].reverse().find((e=>{let{isDefault:t}=e;return!!t}))||n[0]}function St(e){return e.categories}function Nt(e){return e.collections}function Pt(e){return e.defaultBlockName}function Lt(e){return e.freeformFallbackBlockName}function Mt(e){return e.unregisteredFallbackBlockName}function jt(e){return e.groupingBlockName}const Ot=_t(((e,t)=>(0,o.map)((0,o.filter)(e.blockTypes,(e=>(0,o.includes)(e.parent,t))),(e=>{let{name:t}=e;return t}))),(e=>[e.blockTypes])),zt=(e,t,r,n)=>{const a=yt(e,t);return null!=a&&a.supports?(0,o.get)(a.supports,r,n):n};function Dt(e,t,r,n){return!!zt(e,t,r,n)}function It(e,t,r){const n=yt(e,t),a=(0,o.flow)([e=>wt()(null!=e?e:""),e=>e.toLowerCase(),e=>e.trim()]),i=a(r),s=(0,o.flow)([a,e=>(0,o.includes)(e,i)]);return s(n.title)||(0,o.some)(n.keywords,s)||s(n.category)||"string"==typeof n.description&&s(n.description)}const Vt=(e,t)=>Ot(e,t).length>0,Ht=(e,t)=>(0,o.some)(Ot(e,t),(t=>Dt(e,t,"inserter",!0))),Rt=_t(((e,t)=>{const r=Ct(e,t);return!!r&&Object.entries(r.attributes).some((e=>{let[,{__experimentalRole:t}]=e;return"content"===t}))}),((e,t)=>{var r;return[null===(r=e.blockTypes[t])||void 0===r?void 0:r.attributes]}));function $t(e){return"[object Object]"===Object.prototype.toString.call(e)}const{error:Ft,warn:Ut}=window.console,qt={common:"text",formatting:"text",layout:"design"};function Gt(e){return"function"==typeof e}const Kt=(e,t)=>{let{select:r}=t;const{name:n}=e,a=(0,ze.applyFilters)("blocks.registerBlockType",{...e},n,null);if(a.deprecated&&(a.deprecated=a.deprecated.map((t=>(0,o.pick)((0,ze.applyFilters)("blocks.registerBlockType",{...ot(e,V),...t},n,t),V)))),function(e){var t,r;return!1!==$t(e)&&(void 0===(t=e.constructor)||!1!==$t(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf"))}(a))if(Gt(a.save))if(!("edit"in a)||Gt(a.edit))if(qt.hasOwnProperty(a.category)&&(a.category=qt[a.category]),"category"in a&&!(0,o.some)(r.getCategories(),{slug:a.category})&&(Ut('The block "'+n+'" is registered with an invalid category "'+a.category+'".'),delete a.category),"title"in a&&""!==a.title)if("string"==typeof a.title){if(a.icon=Je(a.icon),Qe(a.icon.src))return a;Ft("The icon passed is invalid. The icon should be a string, an element, a function, or an object following the specifications documented in https://developer.wordpress.org/block-editor/developers/block-api/block-registration/#icon-optional")}else Ft("Block titles must be strings.");else Ft('The block "'+n+'" must have a title.');else Ft('The "edit" property must be a valid function.');else Ft('The "save" property must be a valid function.');else Ft("Block settings must be a valid object.")};function Wt(e){return{type:"ADD_BLOCK_TYPES",blockTypes:(0,o.castArray)(e)}}const Yt=e=>t=>{let{dispatch:r,select:n}=t;r({type:"ADD_UNPROCESSED_BLOCK_TYPE",blockType:e});const a=Kt(e,{select:n});a&&r.addBlockTypes(a)},Zt=()=>e=>{let{dispatch:t,select:r}=e;const n=r.__experimentalGetUnprocessedBlockTypes(),a=Object.keys(n).reduce(((e,t)=>{const a=Kt(n[t],{select:r});return a&&e.push(a),e}),[]);a.length&&t.addBlockTypes(a)};function Xt(e){return{type:"REMOVE_BLOCK_TYPES",names:(0,o.castArray)(e)}}function Qt(e,t){return{type:"ADD_BLOCK_STYLES",styles:(0,o.castArray)(t),blockName:e}}function Jt(e,t){return{type:"REMOVE_BLOCK_STYLES",styleNames:(0,o.castArray)(t),blockName:e}}function er(e,t){return{type:"ADD_BLOCK_VARIATIONS",variations:(0,o.castArray)(t),blockName:e}}function tr(e,t){return{type:"REMOVE_BLOCK_VARIATIONS",variationNames:(0,o.castArray)(t),blockName:e}}function rr(e){return{type:"SET_DEFAULT_BLOCK_NAME",name:e}}function nr(e){return{type:"SET_FREEFORM_FALLBACK_BLOCK_NAME",name:e}}function ar(e){return{type:"SET_UNREGISTERED_FALLBACK_BLOCK_NAME",name:e}}function or(e){return{type:"SET_GROUPING_BLOCK_NAME",name:e}}function ir(e){return{type:"SET_CATEGORIES",categories:e}}function sr(e,t){return{type:"UPDATE_CATEGORY",slug:e,category:t}}function lr(e,t,r){return{type:"ADD_BLOCK_COLLECTION",namespace:e,title:t,icon:r}}function cr(e){return{type:"REMOVE_BLOCK_COLLECTION",namespace:e}}const ur=(0,a.createReduxStore)("core/blocks",{reducer:ft,selectors:e,actions:t});(0,a.register)(ur);const dr=window.wp.blockSerializationDefaultParser,pr=window.wp.autop,hr=window.wp.isShallowEqual;var fr=r.n(hr);function gr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{isCommentDelimited:r=!0}=t,{blockName:n,attrs:a={},innerBlocks:o=[],innerContent:i=[]}=e;let s=0;const l=i.map((e=>null!==e?e:gr(o[s++],t))).join("\n").replace(/\n+/g,"\n").trim();return r?Er(n,a,l):l}function mr(e){const t="wp-block-"+e.replace(/\//,"-").replace(/^core-/,"");return(0,ze.applyFilters)("blocks.getBlockDefaultClassName",t,e)}function br(e){const t="editor-block-list-item-"+e.replace(/\//,"-").replace(/^core-/,"");return(0,ze.applyFilters)("blocks.getBlockMenuDefaultClassName",t,e)}const _r={},kr={};function wr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{blockType:t,attributes:r}=_r;return(0,ze.applyFilters)("blocks.getSaveContent.extraProps",{...e},t,r)}function yr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{innerBlocks:t}=kr,r=Br(t,{isInnerBlocks:!0}),n=(0,z.createElement)(z.RawHTML,null,r);return{...e,children:n}}function vr(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const n=et(e);let{save:a}=n;if(a.prototype instanceof z.Component){const e=new a({attributes:t});a=e.render.bind(e)}_r.blockType=n,_r.attributes=t,kr.innerBlocks=r;let o=a({attributes:t,innerBlocks:r});if(null!==o&&"object"==typeof o&&(0,ze.hasFilter)("blocks.getSaveContent.extraProps")&&!(n.apiVersion>1)){const e=(0,ze.applyFilters)("blocks.getSaveContent.extraProps",{...o.props},n,t);fr()(e,o.props)||(o=(0,z.cloneElement)(o,e))}return(0,ze.applyFilters)("blocks.getSaveElement",o,n,t)}function Tr(e,t,r){const n=et(e);return(0,z.renderToString)(vr(n,t,r))}function Cr(e,t){var r;return Object.entries(null!==(r=e.attributes)&&void 0!==r?r:{}).reduce(((e,r)=>{let[n,a]=r;const o=t[n];return void 0===o||void 0!==a.source||"default"in a&&a.default===o||(e[n]=o),e}),{})}function xr(e){let t=e.originalContent;if(e.isValid||e.innerBlocks.length)try{t=Tr(e.name,e.attributes,e.innerBlocks)}catch(e){}return t}function Er(e,t,r){const n=t&&Object.entries(t).length?function(e){return JSON.stringify(e).replace(/--/g,"\\u002d\\u002d").replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026").replace(/\\"/g,"\\u0022")}(t)+" ":"",a=null!=e&&e.startsWith("core/")?e.slice(5):e;return r?`\x3c!-- wp:${a} ${n}--\x3e\n`+r+`\n\x3c!-- /wp:${a} --\x3e`:`\x3c!-- wp:${a} ${n}/--\x3e`}function Ar(e){1===e.length&&Xe(e[0])&&(e=[]);let t=Br(e);return 1===e.length&&e[0].name===se()&&(t=(0,pr.removep)(t)),t}function Br(e,t){return(Array.isArray(e)?e:[e]).map((e=>function(e){let{isInnerBlocks:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e.isValid&&e.__unstableBlockSource)return gr(e.__unstableBlockSource);const r=e.name,n=xr(e);if(r===ue()||!t&&r===se())return n;const a=fe(r);if(!a)return n;const o=Cr(a,e.attributes);return Er(r,o,n)}(e,t))).join("\n\n")}var Sr=/[\t\n\f ]/,Nr=/[A-Za-z]/,Pr=/\r\n?/g;function Lr(e){return Sr.test(e)}function Mr(e){return Nr.test(e)}var jr=function(){function e(e,t){this.delegate=e,this.entityParser=t,this.state="beforeData",this.line=-1,this.column=-1,this.input="",this.index=-1,this.tagNameBuffer="",this.states={beforeData:function(){var e=this.peek();if("<"===e)this.transitionTo("tagOpen"),this.markTagStart(),this.consume();else{if("\n"===e){var t=this.tagNameBuffer.toLowerCase();"pre"!==t&&"textarea"!==t||this.consume()}this.transitionTo("data"),this.delegate.beginData()}},data:function(){var e=this.peek();"<"===e?(this.delegate.finishData(),this.transitionTo("tagOpen"),this.markTagStart(),this.consume()):"&"===e?(this.consume(),this.delegate.appendToData(this.consumeCharRef()||"&")):(this.consume(),this.delegate.appendToData(e))},tagOpen:function(){var e=this.consume();"!"===e?this.transitionTo("markupDeclarationOpen"):"/"===e?this.transitionTo("endTagOpen"):("@"===e||":"===e||Mr(e))&&(this.transitionTo("tagName"),this.tagNameBuffer="",this.delegate.beginStartTag(),this.appendToTagName(e))},markupDeclarationOpen:function(){"-"===this.consume()&&"-"===this.input.charAt(this.index)&&(this.consume(),this.transitionTo("commentStart"),this.delegate.beginComment())},commentStart:function(){var e=this.consume();"-"===e?this.transitionTo("commentStartDash"):">"===e?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData(e),this.transitionTo("comment"))},commentStartDash:function(){var e=this.consume();"-"===e?this.transitionTo("commentEnd"):">"===e?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData("-"),this.transitionTo("comment"))},comment:function(){var e=this.consume();"-"===e?this.transitionTo("commentEndDash"):this.delegate.appendToCommentData(e)},commentEndDash:function(){var e=this.consume();"-"===e?this.transitionTo("commentEnd"):(this.delegate.appendToCommentData("-"+e),this.transitionTo("comment"))},commentEnd:function(){var e=this.consume();">"===e?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData("--"+e),this.transitionTo("comment"))},tagName:function(){var e=this.consume();Lr(e)?this.transitionTo("beforeAttributeName"):"/"===e?this.transitionTo("selfClosingStartTag"):">"===e?(this.delegate.finishTag(),this.transitionTo("beforeData")):this.appendToTagName(e)},beforeAttributeName:function(){var e=this.peek();Lr(e)?this.consume():"/"===e?(this.transitionTo("selfClosingStartTag"),this.consume()):">"===e?(this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):"="===e?(this.delegate.reportSyntaxError("attribute name cannot start with equals sign"),this.transitionTo("attributeName"),this.delegate.beginAttribute(),this.consume(),this.delegate.appendToAttributeName(e)):(this.transitionTo("attributeName"),this.delegate.beginAttribute())},attributeName:function(){var e=this.peek();Lr(e)?(this.transitionTo("afterAttributeName"),this.consume()):"/"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"="===e?(this.transitionTo("beforeAttributeValue"),this.consume()):">"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):'"'===e||"'"===e||"<"===e?(this.delegate.reportSyntaxError(e+" is not a valid character within attribute names"),this.consume(),this.delegate.appendToAttributeName(e)):(this.consume(),this.delegate.appendToAttributeName(e))},afterAttributeName:function(){var e=this.peek();Lr(e)?this.consume():"/"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"="===e?(this.consume(),this.transitionTo("beforeAttributeValue")):">"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.transitionTo("attributeName"),this.delegate.beginAttribute(),this.consume(),this.delegate.appendToAttributeName(e))},beforeAttributeValue:function(){var e=this.peek();Lr(e)?this.consume():'"'===e?(this.transitionTo("attributeValueDoubleQuoted"),this.delegate.beginAttributeValue(!0),this.consume()):"'"===e?(this.transitionTo("attributeValueSingleQuoted"),this.delegate.beginAttributeValue(!0),this.consume()):">"===e?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.transitionTo("attributeValueUnquoted"),this.delegate.beginAttributeValue(!1),this.consume(),this.delegate.appendToAttributeValue(e))},attributeValueDoubleQuoted:function(){var e=this.consume();'"'===e?(this.delegate.finishAttributeValue(),this.transitionTo("afterAttributeValueQuoted")):"&"===e?this.delegate.appendToAttributeValue(this.consumeCharRef()||"&"):this.delegate.appendToAttributeValue(e)},attributeValueSingleQuoted:function(){var e=this.consume();"'"===e?(this.delegate.finishAttributeValue(),this.transitionTo("afterAttributeValueQuoted")):"&"===e?this.delegate.appendToAttributeValue(this.consumeCharRef()||"&"):this.delegate.appendToAttributeValue(e)},attributeValueUnquoted:function(){var e=this.peek();Lr(e)?(this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("beforeAttributeName")):"/"===e?(this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"&"===e?(this.consume(),this.delegate.appendToAttributeValue(this.consumeCharRef()||"&")):">"===e?(this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.consume(),this.delegate.appendToAttributeValue(e))},afterAttributeValueQuoted:function(){var e=this.peek();Lr(e)?(this.consume(),this.transitionTo("beforeAttributeName")):"/"===e?(this.consume(),this.transitionTo("selfClosingStartTag")):">"===e?(this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):this.transitionTo("beforeAttributeName")},selfClosingStartTag:function(){">"===this.peek()?(this.consume(),this.delegate.markTagAsSelfClosing(),this.delegate.finishTag(),this.transitionTo("beforeData")):this.transitionTo("beforeAttributeName")},endTagOpen:function(){var e=this.consume();("@"===e||":"===e||Mr(e))&&(this.transitionTo("tagName"),this.tagNameBuffer="",this.delegate.beginEndTag(),this.appendToTagName(e))}},this.reset()}return e.prototype.reset=function(){this.transitionTo("beforeData"),this.input="",this.index=0,this.line=1,this.column=0,this.delegate.reset()},e.prototype.transitionTo=function(e){this.state=e},e.prototype.tokenize=function(e){this.reset(),this.tokenizePart(e),this.tokenizeEOF()},e.prototype.tokenizePart=function(e){for(this.input+=function(e){return e.replace(Pr,"\n")}(e);this.index<this.input.length;){var t=this.states[this.state];if(void 0===t)throw new Error("unhandled state "+this.state);t.call(this)}},e.prototype.tokenizeEOF=function(){this.flushData()},e.prototype.flushData=function(){"data"===this.state&&(this.delegate.finishData(),this.transitionTo("beforeData"))},e.prototype.peek=function(){return this.input.charAt(this.index)},e.prototype.consume=function(){var e=this.peek();return this.index++,"\n"===e?(this.line++,this.column=0):this.column++,e},e.prototype.consumeCharRef=function(){var e=this.input.indexOf(";",this.index);if(-1!==e){var t=this.input.slice(this.index,e),r=this.entityParser.parse(t);if(r){for(var n=t.length;n;)this.consume(),n--;return this.consume(),r}}},e.prototype.markTagStart=function(){this.delegate.tagOpen()},e.prototype.appendToTagName=function(e){this.tagNameBuffer+=e,this.delegate.appendToTagName(e)},e}(),Or=function(){function e(e,t){void 0===t&&(t={}),this.options=t,this.token=null,this.startLine=1,this.startColumn=0,this.tokens=[],this.tokenizer=new jr(this,e),this._currentAttribute=void 0}return e.prototype.tokenize=function(e){return this.tokens=[],this.tokenizer.tokenize(e),this.tokens},e.prototype.tokenizePart=function(e){return this.tokens=[],this.tokenizer.tokenizePart(e),this.tokens},e.prototype.tokenizeEOF=function(){return this.tokens=[],this.tokenizer.tokenizeEOF(),this.tokens[0]},e.prototype.reset=function(){this.token=null,this.startLine=1,this.startColumn=0},e.prototype.current=function(){var e=this.token;if(null===e)throw new Error("token was unexpectedly null");if(0===arguments.length)return e;for(var t=0;t<arguments.length;t++)if(e.type===arguments[t])return e;throw new Error("token type was unexpectedly "+e.type)},e.prototype.push=function(e){this.token=e,this.tokens.push(e)},e.prototype.currentAttribute=function(){return this._currentAttribute},e.prototype.addLocInfo=function(){this.options.loc&&(this.current().loc={start:{line:this.startLine,column:this.startColumn},end:{line:this.tokenizer.line,column:this.tokenizer.column}}),this.startLine=this.tokenizer.line,this.startColumn=this.tokenizer.column},e.prototype.beginData=function(){this.push({type:"Chars",chars:""})},e.prototype.appendToData=function(e){this.current("Chars").chars+=e},e.prototype.finishData=function(){this.addLocInfo()},e.prototype.beginComment=function(){this.push({type:"Comment",chars:""})},e.prototype.appendToCommentData=function(e){this.current("Comment").chars+=e},e.prototype.finishComment=function(){this.addLocInfo()},e.prototype.tagOpen=function(){},e.prototype.beginStartTag=function(){this.push({type:"StartTag",tagName:"",attributes:[],selfClosing:!1})},e.prototype.beginEndTag=function(){this.push({type:"EndTag",tagName:""})},e.prototype.finishTag=function(){this.addLocInfo()},e.prototype.markTagAsSelfClosing=function(){this.current("StartTag").selfClosing=!0},e.prototype.appendToTagName=function(e){this.current("StartTag","EndTag").tagName+=e},e.prototype.beginAttribute=function(){this._currentAttribute=["","",!1]},e.prototype.appendToAttributeName=function(e){this.currentAttribute()[0]+=e},e.prototype.beginAttributeValue=function(e){this.currentAttribute()[2]=e},e.prototype.appendToAttributeValue=function(e){this.currentAttribute()[1]+=e},e.prototype.finishAttributeValue=function(){this.current("StartTag").attributes.push(this._currentAttribute)},e.prototype.reportSyntaxError=function(e){this.current().syntaxError=e},e}();const zr=window.wp.deprecated;var Dr=r.n(zr);const Ir=window.wp.htmlEntities;function Vr(){function e(e){return function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a<r;a++)n[a-1]=arguments[a];return e("Block validation: "+t,...n)}}return{error:e(console.error),warning:e(console.warn),getItems:()=>[]}}function Hr(){const e=[],t=Vr();return{error(){for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];e.push({log:t.error,args:n})},warning(){for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];e.push({log:t.warning,args:n})},getItems:()=>e}}const Rr=/[\t\n\r\v\f ]+/g,$r=/^[\t\n\r\v\f ]*$/,Fr=/^url\s*\(['"\s]*(.*?)['"\s]*\)$/,Ur=["allowfullscreen","allowpaymentrequest","allowusermedia","async","autofocus","autoplay","checked","controls","default","defer","disabled","download","formnovalidate","hidden","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","typemustmatch"],qr=[...Ur,"autocapitalize","autocomplete","charset","contenteditable","crossorigin","decoding","dir","draggable","enctype","formenctype","formmethod","http-equiv","inputmode","kind","method","preload","scope","shape","spellcheck","translate","type","wrap"],Gr=[e=>e,function(e){return Xr(e).join(" ")}],Kr=/^[\da-z]+$/i,Wr=/^#\d+$/,Yr=/^#x[\da-f]+$/i;class Zr{parse(e){if(t=e,Kr.test(t)||Wr.test(t)||Yr.test(t))return(0,Ir.decodeEntities)("&"+e+";");var t}}function Xr(e){return e.trim().split(Rr)}function Qr(e){return e.attributes.filter((e=>{const[t,r]=e;return r||0===t.indexOf("data-")||(0,o.includes)(qr,t)}))}function Jr(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr(),n=e.chars,a=t.chars;for(let e=0;e<Gr.length;e++){const t=Gr[e];if(n=t(n),a=t(a),n===a)return!0}return r.warning("Expected text `%s`, saw `%s`.",t.chars,e.chars),!1}function en(e){return 0===parseFloat(e)?"0":0===e.indexOf(".")?"0"+e:e}function tn(e){return Xr(e).map(en).join(" ").replace(Fr,"url($1)")}function rn(e){const t=e.replace(/;?\s*$/,"").split(";").map((e=>{const[t,...r]=e.split(":"),n=r.join(":");return[t.trim(),tn(n.trim())]}));return Object.fromEntries(t)}const nn={class:(e,t)=>{const[r,n]=[e,t].map(Xr),a=r.filter((e=>!n.includes(e))),o=n.filter((e=>!r.includes(e)));return 0===a.length&&0===o.length},style:(e,t)=>(0,o.isEqual)(...[e,t].map(rn)),...Object.fromEntries(Ur.map((e=>[e,()=>!0])))};function an(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr();if(e.length!==t.length)return r.warning("Expected attributes %o, instead saw %o.",t,e),!1;const n={};for(let e=0;e<t.length;e++)n[t[e][0].toLowerCase()]=t[e][1];for(let t=0;t<e.length;t++){const[a,o]=e[t],i=a.toLowerCase();if(!n.hasOwnProperty(i))return r.warning("Encountered unexpected attribute `%s`.",a),!1;const s=n[i],l=nn[i];if(l){if(!l(o,s))return r.warning("Expected attribute `%s` of value `%s`, saw `%s`.",a,s,o),!1}else if(o!==s)return r.warning("Expected attribute `%s` of value `%s`, saw `%s`.",a,s,o),!1}return!0}const on={StartTag:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr();return e.tagName!==t.tagName&&e.tagName.toLowerCase()!==t.tagName.toLowerCase()?(r.warning("Expected tag name `%s`, instead saw `%s`.",t.tagName,e.tagName),!1):an(...[e,t].map(Qr),r)},Chars:Jr,Comment:Jr};function sn(e){let t;for(;t=e.shift();){if("Chars"!==t.type)return t;if(!$r.test(t.chars))return t}}function ln(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Vr();try{return new Or(new Zr).tokenize(e)}catch(r){t.warning("Malformed HTML detected: %s",e)}return null}function cn(e,t){return!!e.selfClosing&&!(!t||t.tagName!==e.tagName||"EndTag"!==t.type)}function un(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Vr();if(e===t)return!0;const[n,a]=[e,t].map((e=>ln(e,r)));if(!n||!a)return!1;let o,i;for(;o=sn(n);){if(i=sn(a),!i)return r.warning("Expected end of content, instead saw %o.",o),!1;if(o.type!==i.type)return r.warning("Expected token of type `%s` (%o), instead saw `%s` (%o).",i.type,i,o.type,o),!1;const e=on[o.type];if(e&&!e(o,i,r))return!1;cn(o,a[0])?sn(a):cn(i,n[0])&&sn(n)}return!(i=sn(a))||(r.warning("Expected %o, instead saw end of content.",i),!1)}function dn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.name;const r=e.name===se()||e.name===ue();if(r)return[!0,[]];const n=Hr(),a=et(t);let o;try{o=Tr(a,e.attributes)}catch(e){return n.error("Block validation failed because an error occurred while generating block content:\n\n%s",e.toString()),[!1,n.getItems()]}const i=un(e.originalContent,o,n);return i||n.error("Block validation failed for `%s` (%o).\n\nContent generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",a.name,a,o,e.originalContent),[i,n.getItems()]}function pn(e,t,r){Dr()("isValidBlockContent introduces opportunity for data loss",{since:"12.6",plugin:"Gutenberg",alternative:"validateBlock"});const n=et(e),a={name:n.name,attributes:t,innerBlocks:[],originalContent:r},[o]=dn(a,n);return o}function hn(e,t){const r={...t};if("core/cover-image"===e&&(e="core/cover"),"core/text"!==e&&"core/cover-text"!==e||(e="core/paragraph"),e&&0===e.indexOf("core/social-link-")&&(r.service=e.substring(17),e="core/social-link"),e&&0===e.indexOf("core-embed/")){const t=e.substring(11),n={speaker:"speaker-deck",polldaddy:"crowdsignal"};r.providerNameSlug=t in n?n[t]:t,["amazon-kindle","wordpress"].includes(t)||(r.responsive=!0),e="core/embed"}if("core/post-comment-author"===e&&(e="core/comment-author-name"),"core/post-comment-content"===e&&(e="core/comment-content"),"core/post-comment-date"===e&&(e="core/comment-date"),"core/comments-query-loop"===e){e="core/comments";const{className:t=""}=r;t.includes("wp-block-comments-query-loop")||(r.className=["wp-block-comments-query-loop",t].join(" "))}return"core/post-comments"===e&&(e="core/comments",r.legacy=!0),[e,r]}function fn(e,t){for(var r,n=t.split(".");r=n.shift();){if(!(r in e))return;e=e[r]}return e}var gn,mn=function(){return gn||(gn=document.implementation.createHTMLDocument("")),gn};function bn(e,t){if(t){if("string"==typeof e){var r=mn();r.body.innerHTML=e,e=r.body}if("function"==typeof t)return t(e);if(Object===t.constructor)return Object.keys(t).reduce((function(r,n){return r[n]=bn(e,t[n]),r}),{})}}function kn(e,t){return 1===arguments.length&&(t=e,e=void 0),function(r){var n=r;if(e&&(n=r.querySelector(e)),n)return fn(n,t)}}var wn=r(9756);function yn(e){const t={};for(let r=0;r<e.length;r++){const{name:n,value:a}=e[r];t[n]=a}return t}function vn(e){if(e.nodeType===e.TEXT_NODE)return e.nodeValue;if(e.nodeType!==e.ELEMENT_NODE)throw new TypeError("A block node can only be created from a node of type text or element.");return{type:e.nodeName.toLowerCase(),props:{...yn(e.attributes),children:xn(e.childNodes)}}}function Tn(e){return t=>{let r=t;e&&(r=t.querySelector(e));try{return vn(r)}catch(e){return null}}}const Cn={isNodeOfType:function(e,t){return e&&e.type===t},fromDOM:vn,toHTML:function(e){return En([e])},matcher:Tn};function xn(e){const t=[];for(let r=0;r<e.length;r++)try{t.push(vn(e[r]))}catch(e){}return t}function En(e){const t=e;return(0,z.renderToString)(t)}function An(e){return t=>{let r=t;return e&&(r=t.querySelector(e)),r?xn(r.childNodes):[]}}const Bn={concat:function(){const e=[];for(let t=0;t<arguments.length;t++){const r=(0,o.castArray)(t<0||arguments.length<=t?void 0:arguments[t]);for(let t=0;t<r.length;t++){const n=r[t];"string"==typeof n&&"string"==typeof e[e.length-1]?e[e.length-1]+=n:e.push(n)}}return e},getChildrenArray:function(e){return e},fromDOM:xn,toHTML:En,matcher:An};function Sn(e,t,r,n){let a;switch(t.source){case void 0:a=n?n[e]:void 0;break;case"attribute":case"property":case"html":case"text":case"children":case"node":case"query":case"tag":a=Ln(r,t)}return function(e,t){return void 0===t||function(e,t){return t.some((t=>function(e,t){switch(t){case"string":return"string"==typeof e;case"boolean":return"boolean"==typeof e;case"object":return!!e&&e.constructor===Object;case"null":return null===e;case"array":return Array.isArray(e);case"integer":case"number":return"number"==typeof e}return!0}(e,t)))}(e,(0,o.castArray)(t))}(a,t.type)&&function(e,t){return!Array.isArray(t)||t.includes(e)}(a,t.enum)||(a=void 0),void 0===a&&(a=t.default),a}const Nn=r.n(wn)()((e=>{switch(e.source){case"attribute":let n=function(e,t){return 1===arguments.length&&(t=e,e=void 0),function(r){var n=kn(e,"attributes")(r);if(n&&n.hasOwnProperty(t))return n[t].value}}(e.selector,e.attribute);return"boolean"===e.type&&(n=(e=>(0,o.flow)([e,e=>void 0!==e]))(n)),n;case"html":return t=e.selector,r=e.multiline,e=>{let n=e;if(t&&(n=e.querySelector(t)),!n)return"";if(r){let e="";const t=n.children.length;for(let a=0;a<t;a++){const t=n.children[a];t.nodeName.toLowerCase()===r&&(e+=t.outerHTML)}return e}return n.innerHTML};case"text":return function(e){return kn(e,"textContent")}(e.selector);case"children":return An(e.selector);case"node":return Tn(e.selector);case"query":const a=(0,o.mapValues)(e.query,Nn);return function(e,t){return function(r){var n=r.querySelectorAll(e);return[].map.call(n,(function(e){return bn(e,t)}))}}(e.selector,a);case"tag":return(0,o.flow)([kn(e.selector,"nodeName"),e=>e?e.toLowerCase():void 0]);default:console.error(`Unknown source type "${e.source}"`)}var t,r}));function Pn(e){return bn(e,(e=>e))}function Ln(e,t){return Nn(t)(Pn(e))}function Mn(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=Pn(t),a=et(e),i=(0,o.mapValues)(a.attributes,((e,t)=>Sn(t,e,n,r)));return(0,ze.applyFilters)("blocks.getBlockAttributes",i,a,t,r)}const jn={type:"string",source:"attribute",selector:"[data-custom-class-name] > *",attribute:"class"};function On(e){const t=Ln(`<div data-custom-class-name>${e}</div>`,jn);return t?t.trim().split(/\s+/):[]}function zn(e,t){const r=function(e,t,r){if(be(t,"customClassName",!0)){const{className:n,...a}=e,o=Tr(t,a),i=On(o),s=On(r).filter((e=>!i.includes(e)));s.length?e.className=s.join(" "):o&&delete e.className}return e}(e.attributes,t,e.originalContent);return{...e,attributes:r}}function Dn(){return!1}function In(e,t){let r=function(e,t){const r=se(),n=e.blockName||se(),a=e.attrs||{},o=e.innerBlocks||[];let i=e.innerHTML.trim();return n!==r||null!=t&&t.__unstableSkipAutop||(i=(0,pr.autop)(i).trim()),{...e,blockName:n,attrs:a,innerHTML:i,innerBlocks:o}}(e,t);r=function(e){const[t,r]=hn(e.blockName,e.attrs);return{...e,blockName:t,attrs:r}}(r);let n=fe(r.blockName);n||(r=function(e){const t=ue()||se(),r=gr(e,{isCommentDelimited:!1}),n=gr(e,{isCommentDelimited:!0});return{blockName:t,attrs:{originalName:e.blockName,originalContent:n,originalUndelimitedContent:r},innerHTML:e.blockName?n:e.innerHTML,innerBlocks:e.innerBlocks,innerContent:e.innerContent}}(r),n=fe(r.blockName));const a=r.blockName===se()||r.blockName===ue();if(!n||!r.innerHTML&&a)return;const i=r.innerBlocks.map((e=>In(e,t))).filter((e=>!!e)),s=De(r.blockName,Mn(n,r.innerHTML,r.attrs),i);s.originalContent=r.innerHTML;const l=function(e,t){const[r]=dn(e,t);if(r)return{...e,isValid:r,validationIssues:[]};const n=zn(e,t),[a,o]=dn(e,t);return{...n,isValid:a,validationIssues:o}}(s,n),{validationIssues:c}=l,u=function(e,t,r){const n=t.attrs,{deprecated:a}=r;if(!a||!a.length)return e;for(let t=0;t<a.length;t++){const{isEligible:i=Dn}=a[t];if(e.isValid&&!i(n,e.innerBlocks))continue;const s=Object.assign(ot(r,V),a[t]);let l={...e,attributes:Mn(s,e.originalContent,n)},[c]=dn(l,s);if(c||(l=zn(l,s),[c]=dn(l,s)),!c)continue;let u=l.innerBlocks,d=l.attributes;const{migrate:p}=s;p&&([d=n,u=e.innerBlocks]=(0,o.castArray)(p(d,e.innerBlocks))),e={...e,attributes:d,innerBlocks:u,isValid:!0,validationIssues:[]}}return e}(l,r,n);return u.isValid||(u.__unstableBlockSource=e),l.isValid||!u.isValid||null!=t&&t.__unstableSkipMigrationLogs?l.isValid||u.isValid||c.forEach((e=>{let{log:t,args:r}=e;return t(...r)})):(console.groupCollapsed("Updated Block: %s",n.name),console.info("Block successfully updated for `%s` (%o).\n\nNew content generated by `save` function:\n\n%s\n\nContent retrieved from post body:\n\n%s",n.name,n,Tr(n,u.attributes),u.originalContent),console.groupEnd()),u}function Vn(e,t){return(0,dr.parse)(e).reduce(((e,r)=>{const n=In(r,t);return n&&e.push(n),e}),[])}function Hn(){return Ge("from").filter((e=>{let{type:t}=e;return"raw"===t})).map((e=>e.isMatch?e:{...e,isMatch:t=>e.selector&&t.matches(e.selector)}))}function Rn(e,t){const r=document.implementation.createHTMLDocument("");return r.body.innerHTML=e,Array.from(r.body.children).flatMap((e=>{const r=qe(Hn(),(t=>{let{isMatch:r}=t;return r(e)}));if(!r)return De("core/html",Mn("core/html",e.outerHTML));const{transform:n,blockName:a}=r;return n?n(e,t):De(a,Mn(a,e.outerHTML))}))}function $n(e){const t=document.implementation.createHTMLDocument(""),r=document.implementation.createHTMLDocument(""),n=t.body,a=r.body;for(n.innerHTML=e;n.firstChild;){const e=n.firstChild;e.nodeType===e.TEXT_NODE?(0,D.isEmpty)(e)?n.removeChild(e):(a.lastChild&&"P"===a.lastChild.nodeName||a.appendChild(r.createElement("P")),a.lastChild.appendChild(e)):e.nodeType===e.ELEMENT_NODE?"BR"===e.nodeName?(e.nextSibling&&"BR"===e.nextSibling.nodeName&&(a.appendChild(r.createElement("P")),n.removeChild(e.nextSibling)),a.lastChild&&"P"===a.lastChild.nodeName&&a.lastChild.hasChildNodes()?a.lastChild.appendChild(e):n.removeChild(e)):"P"===e.nodeName?(0,D.isEmpty)(e)?n.removeChild(e):a.appendChild(e):(0,D.isPhrasingContent)(e)?(a.lastChild&&"P"===a.lastChild.nodeName||a.appendChild(r.createElement("P")),a.lastChild.appendChild(e)):a.appendChild(e):n.removeChild(e)}return a.innerHTML}function Fn(e,t){e.nodeType===e.COMMENT_NODE&&("nextpage"!==e.nodeValue?0===e.nodeValue.indexOf("more")&&function(e,t){const r=e.nodeValue.slice(4).trim();let n=e,a=!1;for(;n=n.nextSibling;)if(n.nodeType===n.COMMENT_NODE&&"noteaser"===n.nodeValue){a=!0,(0,D.remove)(n);break}const o=function(e,t,r){const n=r.createElement("wp-block");return n.dataset.block="core/more",e&&(n.dataset.customText=e),t&&(n.dataset.noTeaser=""),n}(r,a,t);if(e.parentNode&&"P"===e.parentNode.nodeName&&1!==e.parentNode.childNodes.length){const r=Array.from(e.parentNode.childNodes),n=r.indexOf(e),a=e.parentNode.parentNode||t.body,i=(e,r)=>(e||(e=t.createElement("p")),e.appendChild(r),e);[r.slice(0,n).reduce(i,null),o,r.slice(n+1).reduce(i,null)].forEach((t=>t&&a.insertBefore(t,e.parentNode))),(0,D.remove)(e.parentNode)}else(0,D.replace)(e,o)}(e,t):(0,D.replace)(e,function(e){const t=e.createElement("wp-block");return t.dataset.block="core/nextpage",t}(t)))}function Un(e){return"OL"===e.nodeName||"UL"===e.nodeName}function qn(e){if(!Un(e))return;const t=e,r=e.previousElementSibling;if(r&&r.nodeName===e.nodeName&&1===t.children.length){for(;t.firstChild;)r.appendChild(t.firstChild);t.parentNode.removeChild(t)}const n=e.parentNode;if(n&&"LI"===n.nodeName&&1===n.children.length&&!/\S/.test((a=n,Array.from(a.childNodes).map((e=>{let{nodeValue:t=""}=e;return t})).join("")))){const e=n,r=e.previousElementSibling,a=e.parentNode;r?(r.appendChild(t),a.removeChild(e)):(a.parentNode.insertBefore(t,a),a.parentNode.removeChild(a))}var a;if(n&&Un(n)){const t=e.previousElementSibling;t?t.appendChild(e):(0,D.unwrap)(e)}}function Gn(e){"BLOCKQUOTE"===e.nodeName&&(e.innerHTML=$n(e.innerHTML))}function Kn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;const r=e.ownerDocument.createElement("figure");t.parentNode.insertBefore(r,t),r.appendChild(e)}function Wn(e,t,r){if(!function(e,t){var r,n;const a=e.nodeName.toLowerCase();return"figcaption"!==a&&!(0,D.isTextContent)(e)&&a in(null!==(r=null==t||null===(n=t.figure)||void 0===n?void 0:n.children)&&void 0!==r?r:{})}(e,r))return;let n=e;const a=e.parentNode;(function(e,t){var r,n,a,o;return e.nodeName.toLowerCase()in(null!==(r=null==t||null===(n=t.figure)||void 0===n||null===(a=n.children)||void 0===a||null===(o=a.a)||void 0===o?void 0:o.children)&&void 0!==r?r:{})})(e,r)&&"A"===a.nodeName&&1===a.childNodes.length&&(n=e.parentNode);const o=n.closest("p,div");o?e.classList?(e.classList.contains("alignright")||e.classList.contains("alignleft")||e.classList.contains("aligncenter")||!o.textContent.trim())&&Kn(n,o):Kn(n,o):"BODY"===n.parentNode.nodeName&&Kn(n)}const Yn=window.wp.shortcode,Zn=e=>Array.isArray(e)?e:[e],Xn=function e(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const a=Ge("from"),o=qe(a,(e=>-1===n.indexOf(e.blockName)&&"shortcode"===e.type&&Zn(e.tag).some((e=>(0,Yn.regexp)(e).test(t)))));if(!o)return[t];const i=Zn(o.tag),s=i.find((e=>(0,Yn.regexp)(e).test(t)));let l;const c=r;if(l=(0,Yn.next)(s,t,r)){var u;r=l.index+l.content.length;const a=t.substr(0,l.index),i=t.substr(r);if(!(null!==(u=l.shortcode.content)&&void 0!==u&&u.includes("<")||/(\n|<p>)\s*$/.test(a)&&/^\s*(\n|<\/p>)/.test(i)))return e(t,r);if(o.isMatch&&!o.isMatch(l.shortcode.attrs))return e(t,c,[...n,o.blockName]);let s=[];if("function"==typeof o.transform)s=[].concat(o.transform(l.shortcode.attrs,l)),s=s.map((e=>(e.originalContent=l.shortcode.content,zn(e,fe(e.name)))));else{const e=Object.fromEntries(Object.entries(o.attributes).filter((e=>{let[,t]=e;return t.shortcode})).map((e=>{let[t,r]=e;return[t,r.shortcode(l.shortcode.attrs,l)]}))),r=fe(o.blockName);if(!r)return[t];const n={...r,attributes:o.attributes};let a=De(o.blockName,Mn(n,l.shortcode.content,e));a.originalContent=l.shortcode.content,a=zn(a,n),s=[a]}return[...e(a),...s,...e(i)]}return[t]};function Qn(e){return function(e,t){const r={phrasingContentSchema:(0,D.getPhrasingContentSchema)(t),isPaste:"paste"===t},n=e.map((e=>{let{isMatch:t,blockName:n,schema:a}=e;const i=be(n,"anchor");return a="function"==typeof a?a(r):a,i||t?(0,o.mapValues)(a,(e=>{let r=e.attributes||[];return i&&(r=[...r,"id"]),{...e,attributes:r,isMatch:t||void 0}})):a}));return(0,o.mergeWith)({},...n,((e,t,r)=>{switch(r){case"children":return"*"===e||"*"===t?"*":{...e,...t};case"attributes":case"require":return[...e||[],...t||[]];case"isMatch":if(!e||!t)return;return function(){return e(...arguments)||t(...arguments)}}}))}(Hn(),e)}function Jn(e,t,r,n){Array.from(e).forEach((e=>{Jn(e.childNodes,t,r,n),t.forEach((t=>{r.contains(e)&&t(e,r,n)}))}))}function ea(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0;const n=document.implementation.createHTMLDocument("");return n.body.innerHTML=e,Jn(n.body.childNodes,t,n,r),n.body.innerHTML}function ta(e,t){const r=e[`${t}Sibling`];if(r&&(0,D.isPhrasingContent)(r))return r;const{parentNode:n}=e;return n&&(0,D.isPhrasingContent)(n)?ta(n,t):void 0}function ra(e){return Dr()("wp.blocks.getPhrasingContentSchema",{since:"5.6",alternative:"wp.dom.getPhrasingContentSchema"}),(0,D.getPhrasingContentSchema)(e)}function na(e){let{HTML:t=""}=e;if(-1!==t.indexOf("\x3c!-- wp:"))return Vn(t);const r=Xn(t),n=Qn();return r.map((e=>"string"!=typeof e?e:Rn(e=$n(e=ea(e,[qn,Fn,Wn,Gn],n)),na))).flat().filter(Boolean)}function aa(e){e.nodeType===e.COMMENT_NODE&&(0,D.remove)(e)}function oa(e,t){return e.every((e=>function(e,t){if((0,D.isTextContent)(e))return!0;if(!t)return!1;const r=e.nodeName.toLowerCase();return[["ul","li","ol"],["h1","h2","h3","h4","h5","h6"]].some((e=>0===[r,t].filter((t=>!e.includes(t))).length))}(e,t)&&oa(Array.from(e.children),t)))}function ia(e){return"BR"===e.nodeName&&e.previousSibling&&"BR"===e.previousSibling.nodeName}function sa(e,t){if("SPAN"===e.nodeName&&e.style){const{fontWeight:r,fontStyle:n,textDecorationLine:a,textDecoration:o,verticalAlign:i}=e.style;"bold"!==r&&"700"!==r||(0,D.wrap)(t.createElement("strong"),e),"italic"===n&&(0,D.wrap)(t.createElement("em"),e),("line-through"===a||o.includes("line-through"))&&(0,D.wrap)(t.createElement("s"),e),"super"===i?(0,D.wrap)(t.createElement("sup"),e):"sub"===i&&(0,D.wrap)(t.createElement("sub"),e)}else"B"===e.nodeName?e=(0,D.replaceTag)(e,"strong"):"I"===e.nodeName?e=(0,D.replaceTag)(e,"em"):"A"===e.nodeName&&(e.target&&"_blank"===e.target.toLowerCase()?e.rel="noreferrer noopener":(e.removeAttribute("target"),e.removeAttribute("rel")),e.name&&!e.id&&(e.id=e.name),e.id&&!e.ownerDocument.querySelector(`[href="#${e.id}"]`)&&e.removeAttribute("id"))}function la(e){"SCRIPT"!==e.nodeName&&"NOSCRIPT"!==e.nodeName&&"TEMPLATE"!==e.nodeName&&"STYLE"!==e.nodeName||e.parentNode.removeChild(e)}const{parseInt:ca}=window;function ua(e){return"OL"===e.nodeName||"UL"===e.nodeName}function da(e,t){if("P"!==e.nodeName)return;const r=e.getAttribute("style");if(!r)return;if(-1===r.indexOf("mso-list"))return;const n=/mso-list\s*:[^;]+level([0-9]+)/i.exec(r);if(!n)return;let a=ca(n[1],10)-1||0;const o=e.previousElementSibling;if(!o||!ua(o)){const r=e.textContent.trim().slice(0,1),n=/[1iIaA]/.test(r),a=t.createElement(n?"ol":"ul");n&&a.setAttribute("type",r),e.parentNode.insertBefore(a,e)}const i=e.previousElementSibling,s=i.nodeName,l=t.createElement("li");let c=i;for(e.removeChild(e.firstChild);e.firstChild;)l.appendChild(e.firstChild);for(;a--;)c=c.lastChild||c,ua(c)&&(c=c.lastChild||c);ua(c)||(c=c.appendChild(t.createElement(s))),c.appendChild(l),e.parentNode.removeChild(e)}const pa=window.wp.blob,{atob:ha,File:fa}=window;function ga(e){if("IMG"===e.nodeName){if(0===e.src.indexOf("file:")&&(e.src=""),0===e.src.indexOf("data:")){const[t,r]=e.src.split(","),[n]=t.slice(5).split(";");if(!r||!n)return void(e.src="");let a;try{a=ha(r)}catch(t){return void(e.src="")}const o=new Uint8Array(a.length);for(let e=0;e<o.length;e++)o[e]=a.charCodeAt(e);const i=n.replace("/","."),s=new fa([o],i,{type:n});e.src=(0,pa.createBlobURL)(s)}1!==e.height&&1!==e.width||e.parentNode.removeChild(e)}}function ma(e){"DIV"===e.nodeName&&(e.innerHTML=$n(e.innerHTML))}var ba=r(7308);const _a=new(r.n(ba)().Converter)({noHeaderId:!0,tables:!0,literalMidWordUnderscores:!0,omitExtraWLInCodeBlocks:!0,simpleLineBreaks:!0,strikethrough:!0});function ka(e){if("IFRAME"===e.nodeName){const t=e.ownerDocument.createTextNode(e.src);e.parentNode.replaceChild(t,e)}}function wa(e){e.id&&0===e.id.indexOf("docs-internal-guid-")&&(0,D.unwrap)(e)}function ya(e){if(e.nodeType!==e.TEXT_NODE)return;let t=e;for(;t=t.parentNode;)if(t.nodeType===t.ELEMENT_NODE&&"PRE"===t.nodeName)return;let r=e.data.replace(/[ \r\n\t]+/g," ");if(" "===r[0]){const t=ta(e,"previous");t&&"BR"!==t.nodeName&&" "!==t.textContent.slice(-1)||(r=r.slice(1))}if(" "===r[r.length-1]){const t=ta(e,"next");(!t||"BR"===t.nodeName||t.nodeType===t.TEXT_NODE&&(" "===(n=t.textContent[0])||"\r"===n||"\n"===n||"\t"===n))&&(r=r.slice(0,-1))}var n;r?e.data=r:e.parentNode.removeChild(e)}function va(e){"BR"===e.nodeName&&(ta(e,"next")||e.parentNode.removeChild(e))}function Ta(e){"P"===e.nodeName&&(e.hasChildNodes()||e.parentNode.removeChild(e))}function Ca(e){if("SPAN"!==e.nodeName)return;if("paragraph-break"!==e.getAttribute("data-stringify-type"))return;const{parentNode:t}=e;t.insertBefore(e.ownerDocument.createElement("br"),e),t.insertBefore(e.ownerDocument.createElement("br"),e),t.removeChild(e)}const{console:xa}=window;function Ea(e,t){return e=ea(e,[wa,sa,aa]),e=(0,D.removeInvalidHTML)(e,(0,D.getPhrasingContentSchema)("paste"),{inline:!0}),t||(e=ea(e,[ya,va])),xa.log("Processed inline HTML:\n\n",e),e}function Aa(e){let{HTML:t="",plainText:r="",mode:n="AUTO",tagName:a,preserveWhiteSpace:o}=e;if(t=t.replace(/<meta[^>]+>/g,""),t=t.replace(/^\s*<html[^>]*>\s*<body[^>]*>(?:\s*<!--\s*StartFragment\s*-->)?/i,""),t=t.replace(/(?:<!--\s*EndFragment\s*-->\s*)?<\/body>\s*<\/html>\s*$/i,""),"INLINE"!==n){const e=t||r;if(-1!==e.indexOf("\x3c!-- wp:"))return Vn(e)}var i;if(String.prototype.normalize&&(t=t.normalize()),!r||t&&!function(e){return!/<(?!br[ />])/i.test(e)}(t)||(t=r,/^\s+$/.test(r)||(i=t,t=_a.makeHtml(function(e){return e.replace(/((?:^|\n)```)([^\n`]+)(```(?:$|\n))/,((e,t,r,n)=>`${t}\n${r}\n${n}`))}(i))),"AUTO"===n&&-1===r.indexOf("\n")&&0!==r.indexOf("<p>")&&0===t.indexOf("<p>")&&(n="INLINE")),"INLINE"===n)return Ea(t,o);t=ea(t,[Ca]);const s=Xn(t),l=s.length>1;if("AUTO"===n&&!l&&function(e,t){const r=document.implementation.createHTMLDocument("");r.body.innerHTML=e;const n=Array.from(r.body.children);return!n.some(ia)&&oa(n,t)}(t,a))return Ea(t,o);const c=(0,D.getPhrasingContentSchema)("paste"),u=Qn("paste"),d=s.map((e=>{if("string"!=typeof e)return e;const t=[wa,da,la,qn,ga,sa,Fn,aa,ka,Wn,Gn,ma],r={...u,...c};return e=ea(e,t,u),e=ea(e=$n(e=(0,D.removeInvalidHTML)(e,r)),[ya,va,Ta],u),xa.log("Processed HTML piece:\n\n",e),Rn(e,Aa)})).flat().filter(Boolean);if("AUTO"===n&&1===d.length&&be(d[0].name,"__unstablePasteTextInline",!1)){const e=/^[\n]+|[\n]+$/g,t=r.replace(e,"");if(""!==t&&-1===t.indexOf("\n"))return(0,D.removeInvalidHTML)(xr(d[0]),c).replace(e,"")}return d}function Ba(){return(0,a.select)(ur).getCategories()}function Sa(e){(0,a.dispatch)(ur).setCategories(e)}function Na(e,t){(0,a.dispatch)(ur).updateCategory(e,t)}function Pa(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length===t.length&&t.every(((t,r)=>{let[n,,a]=t;const o=e[r];return n===o.name&&Pa(o.innerBlocks,a)}))}function La(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return t?t.map(((t,r)=>{var n;let[a,o,i]=t;const s=e[r];if(s&&s.name===a){const e=La(s.innerBlocks,i);return{...s,innerBlocks:e}}const l=fe(a),c=(e,t)=>t?Object.fromEntries(Object.entries(t).map((t=>{let[r,n]=t;return[r,u(e[r],n)]}))):{},u=(e,t)=>{return"html"===(null==(r=e)?void 0:r.source)&&Array.isArray(t)?(0,z.renderToString)(t):(e=>"query"===(null==e?void 0:e.source))(e)&&t?t.map((t=>c(e.query,t))):t;var r},d=c(null!==(n=null==l?void 0:l.attributes)&&void 0!==n?n:{},o);let[p,h]=hn(a,d);return void 0===fe(p)&&(h={originalName:a,originalContent:"",originalUndelimitedContent:""},p="core/missing"),De(p,h,La([],i))})):e}function Ma(e){return Dr()("wp.blocks.withBlockContentContext",{since:"6.1"}),e}})(),(window.wp=window.wp||{}).blocks=n})();
|
14 |
//# sourceMappingURL=index.min.js.map
|
build/blocks/index.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"file":"./build/blocks/index.min.js","mappings":"sBAsKAA,EAAOC,QA/HP,SAAiBC,EAAIC,GACpB,IAGIC,EAGAC,EANAC,EAAO,EAUX,SAASC,IACR,IAECC,EAAMC,EAFHC,EAAON,EACVO,EAAMC,UAAUC,OAGjBC,EAAa,KAAQJ,GAAO,CAQ3B,GAAKA,EAAKF,KAAKK,SAAWD,UAAUC,OAApC,CAMA,IAAMJ,EAAI,EAAGA,EAAIE,EAAKF,IACrB,GAAKC,EAAKF,KAAMC,KAAQG,UAAWH,GAAM,CACxCC,EAAOA,EAAKK,KACZ,SAASD,EA4BX,OArBKJ,IAASN,IAGRM,IAASL,IACbA,EAAOK,EAAKM,MAKoBN,EAAU,KAAEK,KAAOL,EAAKK,KACpDL,EAAKK,OACTL,EAAKK,KAAKC,KAAON,EAAKM,MAGvBN,EAAKK,KAAOX,EACZM,EAAKM,KAAO,KACmB,EAASA,KAAON,EAC/CN,EAAOM,GAIDA,EAAKO,IApCXP,EAAOA,EAAKK,KA2Cd,IADAP,EAAO,IAAIU,MAAOP,GACZF,EAAI,EAAGA,EAAIE,EAAKF,IACrBD,EAAMC,GAAMG,UAAWH,GAgCxB,OA7BAC,EAAO,CACNF,KAAMA,EAGNS,IAAKf,EAAGiB,MAAO,KAAMX,IAOjBJ,GACJA,EAAKY,KAAON,EACZA,EAAKK,KAAOX,GAGZC,EAAOK,EAIHJ,IAAsC,EAAYc,SACtDf,EAAsC,EAASW,MACPD,KAAO,KAE/CT,IAGDF,EAAOM,EAEAA,EAAKO,IAuBb,OAnHAd,EAAUA,GAAW,GA+FrBI,EAASc,MAAQ,WAChBjB,EAAO,KACPC,EAAO,KACPC,EAAO,GAiBDC,I,SCnKR,IAAIe,EAAe,CAClB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GA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","sources":["webpack://wp/./node_modules/memize/index.js","webpack://wp/./node_modules/remove-accents/index.js","webpack://wp/./node_modules/showdown/src/options.js","webpack://wp/./node_modules/showdown/src/showdown.js","webpack://wp/./node_modules/showdown/src/helpers.js","webpack://wp/./node_modules/showdown/src/converter.js","webpack://wp/./node_modules/showdown/src/subParsers/anchors.js","webpack://wp/./node_modules/showdown/src/subParsers/autoLinks.js","webpack://wp/./node_modules/showdown/src/subParsers/blockGamut.js","webpack://wp/./node_modules/showdown/src/subParsers/blockQuotes.js","webpack://wp/./node_modules/showdown/src/subParsers/codeBlocks.js","webpack://wp/./node_modules/showdown/src/subParsers/codeSpans.js","webpack://wp/./node_modules/showdown/src/subParsers/completeHTMLDocument.js","webpack://wp/./node_modules/showdown/src/subParsers/detab.js","webpack://wp/./node_modules/showdown/src/subParsers/ellipsis.js","webpack://wp/./node_modules/showdown/src/subParsers/emoji.js","webpack://wp/./node_modules/showdown/src/subParsers/encodeAmpsAndAngles.js","webpack://wp/./node_modules/showdown/src/subParsers/encodeBackslashEscapes.js","webpack://wp/./node_modules/showdown/src/subParsers/encodeCode.js","webpack://wp/./node_modules/showdown/src/subParsers/escapeSpecialCharsWithinTagAttributes.js","webpack://wp/./node_modules/showdown/src/subParsers/githubCodeBlocks.js","webpack://wp/./node_modules/showdown/src/subParsers/hashBlock.js","webpack://wp/./node_modules/showdown/src/subParsers/hashCodeTags.js","webpack://wp/./node_modules/showdown/src/subParsers/hashElement.js","webpack://wp/./node_modules/showdown/src/subParsers/hashHTMLBlocks.js","webpack://wp/./node_modules/showdown/src/subParsers/hashHTMLSpans.js","webpack://wp/./node_modules/showdown/src/subParsers/hashPreCodeTags.js","webpack://wp/./node_modules/showdown/src/subParsers/headers.js","webpack://wp/./node_modules/showdown/src/subParsers/horizontalRule.js","webpack://wp/./node_modules/showdown/src/subParsers/images.js","webpack://wp/./node_modules/showdown/src/subParsers/italicsAndBold.js","webpack://wp/./node_modules/showdown/src/subParsers/lists.js","webpack://wp/./node_modules/showdown/src/subParsers/metadata.js","webpack://wp/./node_modules/showdown/src/subParsers/outdent.js","webpack://wp/./node_modules/showdown/src/subParsers/paragraphs.js","webpack://wp/./node_modules/showdown/src/subParsers/runExtension.js","webpack://wp/./node_modules/showdown/src/subParsers/spanGamut.js","webpack://wp/./node_modules/showdown/src/subParsers/strikethrough.js","webpack://wp/./node_modules/showdown/src/subParsers/stripLinkDefinitions.js","webpack://wp/./node_modules/showdown/src/subParsers/tables.js","webpack://wp/./node_modules/showdown/src/subParsers/underline.js","webpack://wp/./node_modules/showdown/src/subParsers/unescapeSpecialChars.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/blockquote.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/codeBlock.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/codeSpan.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/emphasis.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/header.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/hr.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/image.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/links.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/list.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/listItem.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/node.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/paragraph.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/pre.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/strikethrough.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/strong.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/table.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/tableCell.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/txt.js","webpack://wp/./node_modules/showdown/src/loader.js","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/compat get default export","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"data\"]","webpack://wp/external window \"lodash\"","webpack://wp/external window [\"wp\",\"i18n\"]","webpack://wp/./packages/blocks/node_modules/colord/index.mjs","webpack://wp/./packages/blocks/node_modules/colord/plugins/a11y.mjs","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"dom\"]","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/constants.js","webpack://wp/./node_modules/tslib/tslib.es6.js","webpack://wp/./node_modules/lower-case/src/index.ts","webpack://wp/./node_modules/no-case/src/index.ts","webpack://wp/./node_modules/pascal-case/src/index.ts","webpack://wp/./node_modules/camel-case/src/index.ts","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/registration.js","webpack://wp/./node_modules/uuid/dist/esm-browser/rng.js","webpack://wp/./node_modules/uuid/dist/esm-browser/regex.js","webpack://wp/./node_modules/uuid/dist/esm-browser/validate.js","webpack://wp/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://wp/./node_modules/uuid/dist/esm-browser/v4.js","webpack://wp/external window [\"wp\",\"hooks\"]","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/factory.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/utils.js","webpack://wp/./packages/blocks/node_modules/colord/plugins/names.mjs","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/reducer.js","webpack://wp/./node_modules/rememo/es/rememo.js","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/selectors.js","webpack://wp/./node_modules/is-plain-object/dist/is-plain-object.mjs","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/actions.js","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/constants.js","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/index.js","webpack://wp/external window [\"wp\",\"blockSerializationDefaultParser\"]","webpack://wp/external window [\"wp\",\"autop\"]","webpack://wp/external window [\"wp\",\"isShallowEqual\"]","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/serialize-raw-block.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/serializer.js","webpack://wp/./node_modules/simple-html-tokenizer/src/generated/html5-named-char-refs.ts","webpack://wp/./node_modules/simple-html-tokenizer/src/utils.ts","webpack://wp/./node_modules/simple-html-tokenizer/src/evented-tokenizer.ts","webpack://wp/./node_modules/simple-html-tokenizer/src/tokenizer.ts","webpack://wp/external window [\"wp\",\"deprecated\"]","webpack://wp/external window [\"wp\",\"htmlEntities\"]","webpack://wp/./packages/blocks/build-module/api/validation/@wordpress/blocks/src/api/validation/logger.js","webpack://wp/./packages/blocks/build-module/api/validation/@wordpress/blocks/src/api/validation/index.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/convert-legacy-block.js","webpack://wp/./node_modules/hpq/es/get-path.js","webpack://wp/./node_modules/hpq/es/index.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/node.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/children.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/get-block-attributes.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/matchers.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/fix-custom-classname.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/apply-built-in-validation-fixes.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/apply-block-deprecated-versions.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/index.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/get-raw-transforms.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/html-to-blocks.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/normalise-blocks.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/special-comment-converter.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/list-reducer.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/blockquote-normaliser.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/figure-content-reducer.js","webpack://wp/external window [\"wp\",\"shortcode\"]","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/shortcode-converter.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/utils.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/index.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/comment-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/is-inline-content.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/phrasing-content-reducer.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/head-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/ms-list-converter.js","webpack://wp/external window [\"wp\",\"blob\"]","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/image-corrector.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/div-normaliser.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/markdown-converter.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/iframe-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/google-docs-uid-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/html-formatting-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/br-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/empty-paragraph-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/slack-paragraph-corrector.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/paste-handler.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/categories.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/templates.js","webpack://wp/./packages/blocks/build-module/@wordpress/blocks/src/deprecated.js"],"sourcesContent":["/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {Function} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {F & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize( fn, options ) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized( /* ...args */ ) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs, i;\n\n\t\tsearchCache: while ( node ) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif ( node.args.length !== arguments.length ) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( node.args[ i ] !== arguments[ i ] ) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif ( node !== head ) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif ( node === tail ) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ ( node.prev ).next = node.next;\n\t\t\t\tif ( node.next ) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ ( head ).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply( null, args ),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif ( head ) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif ( size === /** @type {MemizeOptions} */ ( options ).maxSize ) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ ( tail ).prev;\n\t\t\t/** @type {MemizeCacheNode} */ ( tail ).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function() {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\tif ( process.env.NODE_ENV === 'test' ) {\n\t\t// Cache is not exposed in the public API, but used in tests to ensure\n\t\t// expected list progression\n\t\tmemoized.getCache = function() {\n\t\t\treturn [ head, tail, size ];\n\t\t};\n\t}\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nmodule.exports = memize;\n","var characterMap = {\r\n\t\"À\": \"A\",\r\n\t\"Á\": \"A\",\r\n\t\"Â\": \"A\",\r\n\t\"Ã\": \"A\",\r\n\t\"Ä\": \"A\",\r\n\t\"Å\": \"A\",\r\n\t\"Ấ\": \"A\",\r\n\t\"Ắ\": \"A\",\r\n\t\"Ẳ\": \"A\",\r\n\t\"Ẵ\": \"A\",\r\n\t\"Ặ\": \"A\",\r\n\t\"Æ\": \"AE\",\r\n\t\"Ầ\": \"A\",\r\n\t\"Ằ\": \"A\",\r\n\t\"Ȃ\": \"A\",\r\n\t\"Ç\": \"C\",\r\n\t\"Ḉ\": \"C\",\r\n\t\"È\": \"E\",\r\n\t\"É\": \"E\",\r\n\t\"Ê\": \"E\",\r\n\t\"Ë\": \"E\",\r\n\t\"Ế\": \"E\",\r\n\t\"Ḗ\": \"E\",\r\n\t\"Ề\": \"E\",\r\n\t\"Ḕ\": \"E\",\r\n\t\"Ḝ\": \"E\",\r\n\t\"Ȇ\": \"E\",\r\n\t\"Ì\": \"I\",\r\n\t\"Í\": \"I\",\r\n\t\"Î\": \"I\",\r\n\t\"Ï\": \"I\",\r\n\t\"Ḯ\": \"I\",\r\n\t\"Ȋ\": \"I\",\r\n\t\"Ð\": \"D\",\r\n\t\"Ñ\": \"N\",\r\n\t\"Ò\": \"O\",\r\n\t\"Ó\": \"O\",\r\n\t\"Ô\": \"O\",\r\n\t\"Õ\": \"O\",\r\n\t\"Ö\": \"O\",\r\n\t\"Ø\": \"O\",\r\n\t\"Ố\": \"O\",\r\n\t\"Ṍ\": \"O\",\r\n\t\"Ṓ\": \"O\",\r\n\t\"Ȏ\": \"O\",\r\n\t\"Ù\": \"U\",\r\n\t\"Ú\": \"U\",\r\n\t\"Û\": \"U\",\r\n\t\"Ü\": \"U\",\r\n\t\"Ý\": \"Y\",\r\n\t\"à\": \"a\",\r\n\t\"á\": \"a\",\r\n\t\"â\": \"a\",\r\n\t\"ã\": \"a\",\r\n\t\"ä\": \"a\",\r\n\t\"å\": \"a\",\r\n\t\"ấ\": \"a\",\r\n\t\"ắ\": \"a\",\r\n\t\"ẳ\": \"a\",\r\n\t\"ẵ\": \"a\",\r\n\t\"ặ\": \"a\",\r\n\t\"æ\": \"ae\",\r\n\t\"ầ\": \"a\",\r\n\t\"ằ\": \"a\",\r\n\t\"ȃ\": \"a\",\r\n\t\"ç\": \"c\",\r\n\t\"ḉ\": \"c\",\r\n\t\"è\": \"e\",\r\n\t\"é\": \"e\",\r\n\t\"ê\": \"e\",\r\n\t\"ë\": \"e\",\r\n\t\"ế\": \"e\",\r\n\t\"ḗ\": \"e\",\r\n\t\"ề\": \"e\",\r\n\t\"ḕ\": \"e\",\r\n\t\"ḝ\": \"e\",\r\n\t\"ȇ\": \"e\",\r\n\t\"ì\": \"i\",\r\n\t\"í\": \"i\",\r\n\t\"î\": \"i\",\r\n\t\"ï\": \"i\",\r\n\t\"ḯ\": \"i\",\r\n\t\"ȋ\": \"i\",\r\n\t\"ð\": \"d\",\r\n\t\"ñ\": \"n\",\r\n\t\"ò\": \"o\",\r\n\t\"ó\": \"o\",\r\n\t\"ô\": \"o\",\r\n\t\"õ\": \"o\",\r\n\t\"ö\": \"o\",\r\n\t\"ø\": \"o\",\r\n\t\"ố\": \"o\",\r\n\t\"ṍ\": \"o\",\r\n\t\"ṓ\": \"o\",\r\n\t\"ȏ\": \"o\",\r\n\t\"ù\": \"u\",\r\n\t\"ú\": \"u\",\r\n\t\"û\": \"u\",\r\n\t\"ü\": \"u\",\r\n\t\"ý\": \"y\",\r\n\t\"ÿ\": \"y\",\r\n\t\"Ā\": \"A\",\r\n\t\"ā\": \"a\",\r\n\t\"Ă\": \"A\",\r\n\t\"ă\": \"a\",\r\n\t\"Ą\": \"A\",\r\n\t\"ą\": \"a\",\r\n\t\"Ć\": \"C\",\r\n\t\"ć\": \"c\",\r\n\t\"Ĉ\": \"C\",\r\n\t\"ĉ\": \"c\",\r\n\t\"Ċ\": \"C\",\r\n\t\"ċ\": \"c\",\r\n\t\"Č\": \"C\",\r\n\t\"č\": \"c\",\r\n\t\"C̆\": \"C\",\r\n\t\"c̆\": \"c\",\r\n\t\"Ď\": \"D\",\r\n\t\"ď\": \"d\",\r\n\t\"Đ\": \"D\",\r\n\t\"đ\": \"d\",\r\n\t\"Ē\": \"E\",\r\n\t\"ē\": \"e\",\r\n\t\"Ĕ\": \"E\",\r\n\t\"ĕ\": \"e\",\r\n\t\"Ė\": \"E\",\r\n\t\"ė\": \"e\",\r\n\t\"Ę\": \"E\",\r\n\t\"ę\": \"e\",\r\n\t\"Ě\": \"E\",\r\n\t\"ě\": \"e\",\r\n\t\"Ĝ\": \"G\",\r\n\t\"Ǵ\": \"G\",\r\n\t\"ĝ\": \"g\",\r\n\t\"ǵ\": \"g\",\r\n\t\"Ğ\": \"G\",\r\n\t\"ğ\": \"g\",\r\n\t\"Ġ\": \"G\",\r\n\t\"ġ\": \"g\",\r\n\t\"Ģ\": \"G\",\r\n\t\"ģ\": \"g\",\r\n\t\"Ĥ\": \"H\",\r\n\t\"ĥ\": \"h\",\r\n\t\"Ħ\": \"H\",\r\n\t\"ħ\": \"h\",\r\n\t\"Ḫ\": \"H\",\r\n\t\"ḫ\": \"h\",\r\n\t\"Ĩ\": \"I\",\r\n\t\"ĩ\": \"i\",\r\n\t\"Ī\": \"I\",\r\n\t\"ī\": \"i\",\r\n\t\"Ĭ\": \"I\",\r\n\t\"ĭ\": \"i\",\r\n\t\"Į\": \"I\",\r\n\t\"į\": \"i\",\r\n\t\"İ\": \"I\",\r\n\t\"ı\": \"i\",\r\n\t\"IJ\": \"IJ\",\r\n\t\"ij\": \"ij\",\r\n\t\"Ĵ\": \"J\",\r\n\t\"ĵ\": \"j\",\r\n\t\"Ķ\": \"K\",\r\n\t\"ķ\": \"k\",\r\n\t\"Ḱ\": \"K\",\r\n\t\"ḱ\": \"k\",\r\n\t\"K̆\": \"K\",\r\n\t\"k̆\": \"k\",\r\n\t\"Ĺ\": \"L\",\r\n\t\"ĺ\": \"l\",\r\n\t\"Ļ\": \"L\",\r\n\t\"ļ\": \"l\",\r\n\t\"Ľ\": \"L\",\r\n\t\"ľ\": \"l\",\r\n\t\"Ŀ\": \"L\",\r\n\t\"ŀ\": \"l\",\r\n\t\"Ł\": \"l\",\r\n\t\"ł\": \"l\",\r\n\t\"Ḿ\": \"M\",\r\n\t\"ḿ\": \"m\",\r\n\t\"M̆\": \"M\",\r\n\t\"m̆\": \"m\",\r\n\t\"Ń\": \"N\",\r\n\t\"ń\": \"n\",\r\n\t\"Ņ\": \"N\",\r\n\t\"ņ\": \"n\",\r\n\t\"Ň\": \"N\",\r\n\t\"ň\": \"n\",\r\n\t\"ʼn\": \"n\",\r\n\t\"N̆\": \"N\",\r\n\t\"n̆\": \"n\",\r\n\t\"Ō\": \"O\",\r\n\t\"ō\": \"o\",\r\n\t\"Ŏ\": \"O\",\r\n\t\"ŏ\": \"o\",\r\n\t\"Ő\": \"O\",\r\n\t\"ő\": \"o\",\r\n\t\"Œ\": \"OE\",\r\n\t\"œ\": \"oe\",\r\n\t\"P̆\": \"P\",\r\n\t\"p̆\": \"p\",\r\n\t\"Ŕ\": \"R\",\r\n\t\"ŕ\": \"r\",\r\n\t\"Ŗ\": \"R\",\r\n\t\"ŗ\": \"r\",\r\n\t\"Ř\": \"R\",\r\n\t\"ř\": \"r\",\r\n\t\"R̆\": \"R\",\r\n\t\"r̆\": \"r\",\r\n\t\"Ȓ\": \"R\",\r\n\t\"ȓ\": \"r\",\r\n\t\"Ś\": \"S\",\r\n\t\"ś\": \"s\",\r\n\t\"Ŝ\": \"S\",\r\n\t\"ŝ\": \"s\",\r\n\t\"Ş\": \"S\",\r\n\t\"Ș\": \"S\",\r\n\t\"ș\": \"s\",\r\n\t\"ş\": \"s\",\r\n\t\"Š\": \"S\",\r\n\t\"š\": \"s\",\r\n\t\"Ţ\": \"T\",\r\n\t\"ţ\": \"t\",\r\n\t\"ț\": \"t\",\r\n\t\"Ț\": \"T\",\r\n\t\"Ť\": \"T\",\r\n\t\"ť\": \"t\",\r\n\t\"Ŧ\": \"T\",\r\n\t\"ŧ\": \"t\",\r\n\t\"T̆\": \"T\",\r\n\t\"t̆\": \"t\",\r\n\t\"Ũ\": \"U\",\r\n\t\"ũ\": \"u\",\r\n\t\"Ū\": \"U\",\r\n\t\"ū\": \"u\",\r\n\t\"Ŭ\": \"U\",\r\n\t\"ŭ\": \"u\",\r\n\t\"Ů\": \"U\",\r\n\t\"ů\": \"u\",\r\n\t\"Ű\": \"U\",\r\n\t\"ű\": \"u\",\r\n\t\"Ų\": \"U\",\r\n\t\"ų\": \"u\",\r\n\t\"Ȗ\": \"U\",\r\n\t\"ȗ\": \"u\",\r\n\t\"V̆\": \"V\",\r\n\t\"v̆\": \"v\",\r\n\t\"Ŵ\": \"W\",\r\n\t\"ŵ\": \"w\",\r\n\t\"Ẃ\": \"W\",\r\n\t\"ẃ\": \"w\",\r\n\t\"X̆\": \"X\",\r\n\t\"x̆\": \"x\",\r\n\t\"Ŷ\": \"Y\",\r\n\t\"ŷ\": \"y\",\r\n\t\"Ÿ\": \"Y\",\r\n\t\"Y̆\": \"Y\",\r\n\t\"y̆\": \"y\",\r\n\t\"Ź\": \"Z\",\r\n\t\"ź\": \"z\",\r\n\t\"Ż\": \"Z\",\r\n\t\"ż\": \"z\",\r\n\t\"Ž\": \"Z\",\r\n\t\"ž\": \"z\",\r\n\t\"ſ\": \"s\",\r\n\t\"ƒ\": \"f\",\r\n\t\"Ơ\": \"O\",\r\n\t\"ơ\": \"o\",\r\n\t\"Ư\": \"U\",\r\n\t\"ư\": \"u\",\r\n\t\"Ǎ\": \"A\",\r\n\t\"ǎ\": \"a\",\r\n\t\"Ǐ\": \"I\",\r\n\t\"ǐ\": \"i\",\r\n\t\"Ǒ\": \"O\",\r\n\t\"ǒ\": \"o\",\r\n\t\"Ǔ\": \"U\",\r\n\t\"ǔ\": \"u\",\r\n\t\"Ǖ\": \"U\",\r\n\t\"ǖ\": \"u\",\r\n\t\"Ǘ\": \"U\",\r\n\t\"ǘ\": \"u\",\r\n\t\"Ǚ\": \"U\",\r\n\t\"ǚ\": \"u\",\r\n\t\"Ǜ\": \"U\",\r\n\t\"ǜ\": \"u\",\r\n\t\"Ứ\": \"U\",\r\n\t\"ứ\": \"u\",\r\n\t\"Ṹ\": \"U\",\r\n\t\"ṹ\": \"u\",\r\n\t\"Ǻ\": \"A\",\r\n\t\"ǻ\": \"a\",\r\n\t\"Ǽ\": \"AE\",\r\n\t\"ǽ\": \"ae\",\r\n\t\"Ǿ\": \"O\",\r\n\t\"ǿ\": \"o\",\r\n\t\"Þ\": \"TH\",\r\n\t\"þ\": \"th\",\r\n\t\"Ṕ\": \"P\",\r\n\t\"ṕ\": \"p\",\r\n\t\"Ṥ\": \"S\",\r\n\t\"ṥ\": \"s\",\r\n\t\"X́\": \"X\",\r\n\t\"x́\": \"x\",\r\n\t\"Ѓ\": \"Г\",\r\n\t\"ѓ\": \"г\",\r\n\t\"Ќ\": \"К\",\r\n\t\"ќ\": \"к\",\r\n\t\"A̋\": \"A\",\r\n\t\"a̋\": \"a\",\r\n\t\"E̋\": \"E\",\r\n\t\"e̋\": \"e\",\r\n\t\"I̋\": \"I\",\r\n\t\"i̋\": \"i\",\r\n\t\"Ǹ\": \"N\",\r\n\t\"ǹ\": \"n\",\r\n\t\"Ồ\": \"O\",\r\n\t\"ồ\": \"o\",\r\n\t\"Ṑ\": \"O\",\r\n\t\"ṑ\": \"o\",\r\n\t\"Ừ\": \"U\",\r\n\t\"ừ\": \"u\",\r\n\t\"Ẁ\": \"W\",\r\n\t\"ẁ\": \"w\",\r\n\t\"Ỳ\": \"Y\",\r\n\t\"ỳ\": \"y\",\r\n\t\"Ȁ\": \"A\",\r\n\t\"ȁ\": \"a\",\r\n\t\"Ȅ\": \"E\",\r\n\t\"ȅ\": \"e\",\r\n\t\"Ȉ\": \"I\",\r\n\t\"ȉ\": \"i\",\r\n\t\"Ȍ\": \"O\",\r\n\t\"ȍ\": \"o\",\r\n\t\"Ȑ\": \"R\",\r\n\t\"ȑ\": \"r\",\r\n\t\"Ȕ\": \"U\",\r\n\t\"ȕ\": \"u\",\r\n\t\"B̌\": \"B\",\r\n\t\"b̌\": \"b\",\r\n\t\"Č̣\": \"C\",\r\n\t\"č̣\": \"c\",\r\n\t\"Ê̌\": \"E\",\r\n\t\"ê̌\": \"e\",\r\n\t\"F̌\": \"F\",\r\n\t\"f̌\": \"f\",\r\n\t\"Ǧ\": \"G\",\r\n\t\"ǧ\": \"g\",\r\n\t\"Ȟ\": \"H\",\r\n\t\"ȟ\": \"h\",\r\n\t\"J̌\": \"J\",\r\n\t\"ǰ\": \"j\",\r\n\t\"Ǩ\": \"K\",\r\n\t\"ǩ\": \"k\",\r\n\t\"M̌\": \"M\",\r\n\t\"m̌\": \"m\",\r\n\t\"P̌\": \"P\",\r\n\t\"p̌\": \"p\",\r\n\t\"Q̌\": \"Q\",\r\n\t\"q̌\": \"q\",\r\n\t\"Ř̩\": \"R\",\r\n\t\"ř̩\": \"r\",\r\n\t\"Ṧ\": \"S\",\r\n\t\"ṧ\": \"s\",\r\n\t\"V̌\": \"V\",\r\n\t\"v̌\": \"v\",\r\n\t\"W̌\": \"W\",\r\n\t\"w̌\": \"w\",\r\n\t\"X̌\": \"X\",\r\n\t\"x̌\": \"x\",\r\n\t\"Y̌\": \"Y\",\r\n\t\"y̌\": \"y\",\r\n\t\"A̧\": \"A\",\r\n\t\"a̧\": \"a\",\r\n\t\"B̧\": \"B\",\r\n\t\"b̧\": \"b\",\r\n\t\"Ḑ\": \"D\",\r\n\t\"ḑ\": \"d\",\r\n\t\"Ȩ\": \"E\",\r\n\t\"ȩ\": \"e\",\r\n\t\"Ɛ̧\": \"E\",\r\n\t\"ɛ̧\": \"e\",\r\n\t\"Ḩ\": \"H\",\r\n\t\"ḩ\": \"h\",\r\n\t\"I̧\": \"I\",\r\n\t\"i̧\": \"i\",\r\n\t\"Ɨ̧\": \"I\",\r\n\t\"ɨ̧\": \"i\",\r\n\t\"M̧\": \"M\",\r\n\t\"m̧\": \"m\",\r\n\t\"O̧\": \"O\",\r\n\t\"o̧\": \"o\",\r\n\t\"Q̧\": \"Q\",\r\n\t\"q̧\": \"q\",\r\n\t\"U̧\": \"U\",\r\n\t\"u̧\": \"u\",\r\n\t\"X̧\": \"X\",\r\n\t\"x̧\": \"x\",\r\n\t\"Z̧\": \"Z\",\r\n\t\"z̧\": \"z\",\r\n};\r\n\r\nvar chars = Object.keys(characterMap).join('|');\r\nvar allAccents = new RegExp(chars, 'g');\r\nvar firstAccent = new RegExp(chars, '');\r\n\r\nvar removeAccents = function(string) {\t\r\n\treturn string.replace(allAccents, function(match) {\r\n\t\treturn characterMap[match];\r\n\t});\r\n};\r\n\r\nvar hasAccents = function(string) {\r\n\treturn !!string.match(firstAccent);\r\n};\r\n\r\nmodule.exports = removeAccents;\r\nmodule.exports.has = hasAccents;\r\nmodule.exports.remove = removeAccents;\r\n","/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n description: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n description: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n description: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n description: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n description: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n description: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n description: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n description: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof console === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f‍\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4‍\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71‍\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47‍\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77‍\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f‍\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41‍\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f‍\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d‍\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f‍\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82‍\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87‍\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68‍\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68‍\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38‍\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68‍\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26‍\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68‍\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68‍\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68‍\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68‍\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68‍\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39‍\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68‍\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68‍\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68‍\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e‍\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d‍\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68‍\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37‍\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68‍\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68‍\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68‍\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68‍\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86‍\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c‍\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5‍\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45‍\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46‍\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e‍\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e‍\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f‍\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b‍\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3‍\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3‍\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4‍\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca‍\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81‍\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6‍\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f‍\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69‍\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69‍\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38‍\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69‍\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26‍\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69‍\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69‍\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69‍\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69‍\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69‍\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39‍\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69‍\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69‍\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69‍\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e‍\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d‍\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69‍\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37‍\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69‍\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69‍\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69‍\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69‍\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73‍\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c‍\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, ' ');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '"');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n","/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n","/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof text === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/</g, '<');\n\n // Encode >\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '"')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n","/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n","/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&')\n // double quotes\n .replace(/\"/g, '"');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n","/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n","/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n","/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n","/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n","showdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n linkId = linkId.toLowerCase();\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '"');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n","showdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n","/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n","showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n","showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n","showdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n","showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n","showdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n","\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n});\n","showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n","var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"lodash\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","var o=function(o){var t=o/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},t=function(t){return.2126*o(t.r)+.7152*o(t.g)+.0722*o(t.b)};export default function(o){o.prototype.luminance=function(){return o=t(this.rgba),void 0===(r=2)&&(r=0),void 0===n&&(n=Math.pow(10,r)),Math.round(n*o)/n+0;var o,r,n},o.prototype.contrast=function(r){void 0===r&&(r=\"#FFF\");var n,a,i,e,v,u,d,c=r instanceof o?r:new o(r);return e=this.rgba,v=c.toRgb(),u=t(e),d=t(v),n=u>d?(u+.05)/(d+.05):(d+.05)/(u+.05),void 0===(a=2)&&(a=0),void 0===i&&(i=Math.pow(10,a)),Math.floor(i*n)/i+0},o.prototype.isReadable=function(o,t){return void 0===o&&(o=\"#FFF\"),void 0===t&&(t={}),this.contrast(o)>=(e=void 0===(i=(r=t).size)?\"normal\":i,\"AAA\"===(a=void 0===(n=r.level)?\"AA\":n)&&\"normal\"===e?7:\"AA\"===a&&\"large\"===e?3:4.5);var r,n,a,i,e}}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"dom\"];","export const BLOCK_ICON_DEFAULT = 'block-default';\n\n/**\n * Array of valid keys in a block type settings deprecation object.\n *\n * @type {string[]}\n */\nexport const DEPRECATED_ENTRY_KEYS = [\n\t'attributes',\n\t'supports',\n\t'save',\n\t'migrate',\n\t'isEligible',\n\t'apiVersion',\n];\n\nexport const __EXPERIMENTAL_STYLE_PROPERTY = {\n\t// Kept for back-compatibility purposes.\n\t'--wp--style--color--link': {\n\t\tvalue: [ 'color', 'link' ],\n\t\tsupport: [ 'color', 'link' ],\n\t},\n\tbackground: {\n\t\tvalue: [ 'color', 'gradient' ],\n\t\tsupport: [ 'color', 'gradients' ],\n\t\tuseEngine: true,\n\t},\n\tbackgroundColor: {\n\t\tvalue: [ 'color', 'background' ],\n\t\tsupport: [ 'color', 'background' ],\n\t\trequiresOptOut: true,\n\t\tuseEngine: true,\n\t},\n\tborderColor: {\n\t\tvalue: [ 'border', 'color' ],\n\t\tsupport: [ '__experimentalBorder', 'color' ],\n\t\tuseEngine: true,\n\t},\n\tborderRadius: {\n\t\tvalue: [ 'border', 'radius' ],\n\t\tsupport: [ '__experimentalBorder', 'radius' ],\n\t\tproperties: {\n\t\t\tborderTopLeftRadius: 'topLeft',\n\t\t\tborderTopRightRadius: 'topRight',\n\t\t\tborderBottomLeftRadius: 'bottomLeft',\n\t\t\tborderBottomRightRadius: 'bottomRight',\n\t\t},\n\t\tuseEngine: true,\n\t},\n\tborderStyle: {\n\t\tvalue: [ 'border', 'style' ],\n\t\tsupport: [ '__experimentalBorder', 'style' ],\n\t\tuseEngine: true,\n\t},\n\tborderWidth: {\n\t\tvalue: [ 'border', 'width' ],\n\t\tsupport: [ '__experimentalBorder', 'width' ],\n\t\tuseEngine: true,\n\t},\n\tborderTopColor: {\n\t\tvalue: [ 'border', 'top', 'color' ],\n\t\tsupport: [ '__experimentalBorder', 'color' ],\n\t\tuseEngine: true,\n\t},\n\tborderTopStyle: {\n\t\tvalue: [ 'border', 'top', 'style' ],\n\t\tsupport: [ '__experimentalBorder', 'style' ],\n\t\tuseEngine: true,\n\t},\n\tborderTopWidth: {\n\t\tvalue: [ 'border', 'top', 'width' ],\n\t\tsupport: [ '__experimentalBorder', 'width' ],\n\t\tuseEngine: true,\n\t},\n\tborderRightColor: {\n\t\tvalue: [ 'border', 'right', 'color' ],\n\t\tsupport: [ '__experimentalBorder', 'color' ],\n\t\tuseEngine: true,\n\t},\n\tborderRightStyle: {\n\t\tvalue: [ 'border', 'right', 'style' ],\n\t\tsupport: [ '__experimentalBorder', 'style' ],\n\t\tuseEngine: true,\n\t},\n\tborderRightWidth: {\n\t\tvalue: [ 'border', 'right', 'width' ],\n\t\tsupport: [ '__experimentalBorder', 'width' ],\n\t\tuseEngine: true,\n\t},\n\tborderBottomColor: {\n\t\tvalue: [ 'border', 'bottom', 'color' ],\n\t\tsupport: [ '__experimentalBorder', 'color' ],\n\t\tuseEngine: true,\n\t},\n\tborderBottomStyle: {\n\t\tvalue: [ 'border', 'bottom', 'style' ],\n\t\tsupport: [ '__experimentalBorder', 'style' ],\n\t\tuseEngine: true,\n\t},\n\tborderBottomWidth: {\n\t\tvalue: [ 'border', 'bottom', 'width' ],\n\t\tsupport: [ '__experimentalBorder', 'width' ],\n\t\tuseEngine: true,\n\t},\n\tborderLeftColor: {\n\t\tvalue: [ 'border', 'left', 'color' ],\n\t\tsupport: [ '__experimentalBorder', 'color' ],\n\t\tuseEngine: true,\n\t},\n\tborderLeftStyle: {\n\t\tvalue: [ 'border', 'left', 'style' ],\n\t\tsupport: [ '__experimentalBorder', 'style' ],\n\t\tuseEngine: true,\n\t},\n\tborderLeftWidth: {\n\t\tvalue: [ 'border', 'left', 'width' ],\n\t\tsupport: [ '__experimentalBorder', 'width' ],\n\t\tuseEngine: true,\n\t},\n\tcolor: {\n\t\tvalue: [ 'color', 'text' ],\n\t\tsupport: [ 'color', 'text' ],\n\t\trequiresOptOut: true,\n\t\tuseEngine: true,\n\t},\n\tfilter: {\n\t\tvalue: [ 'filter', 'duotone' ],\n\t\tsupport: [ 'color', '__experimentalDuotone' ],\n\t},\n\tlinkColor: {\n\t\tvalue: [ 'elements', 'link', 'color', 'text' ],\n\t\tsupport: [ 'color', 'link' ],\n\t},\n\tbuttonColor: {\n\t\tvalue: [ 'elements', 'button', 'color', 'text' ],\n\t\tsupport: [ 'color', 'button' ],\n\t},\n\tbuttonBackgroundColor: {\n\t\tvalue: [ 'elements', 'button', 'color', 'background' ],\n\t\tsupport: [ 'color', 'button' ],\n\t},\n\tfontFamily: {\n\t\tvalue: [ 'typography', 'fontFamily' ],\n\t\tsupport: [ 'typography', '__experimentalFontFamily' ],\n\t\tuseEngine: true,\n\t},\n\tfontSize: {\n\t\tvalue: [ 'typography', 'fontSize' ],\n\t\tsupport: [ 'typography', 'fontSize' ],\n\t\tuseEngine: true,\n\t},\n\tfontStyle: {\n\t\tvalue: [ 'typography', 'fontStyle' ],\n\t\tsupport: [ 'typography', '__experimentalFontStyle' ],\n\t\tuseEngine: true,\n\t},\n\tfontWeight: {\n\t\tvalue: [ 'typography', 'fontWeight' ],\n\t\tsupport: [ 'typography', '__experimentalFontWeight' ],\n\t\tuseEngine: true,\n\t},\n\tlineHeight: {\n\t\tvalue: [ 'typography', 'lineHeight' ],\n\t\tsupport: [ 'typography', 'lineHeight' ],\n\t\tuseEngine: true,\n\t},\n\tmargin: {\n\t\tvalue: [ 'spacing', 'margin' ],\n\t\tsupport: [ 'spacing', 'margin' ],\n\t\tproperties: {\n\t\t\tmarginTop: 'top',\n\t\t\tmarginRight: 'right',\n\t\t\tmarginBottom: 'bottom',\n\t\t\tmarginLeft: 'left',\n\t\t},\n\t\tuseEngine: true,\n\t},\n\tpadding: {\n\t\tvalue: [ 'spacing', 'padding' ],\n\t\tsupport: [ 'spacing', 'padding' ],\n\t\tproperties: {\n\t\t\tpaddingTop: 'top',\n\t\t\tpaddingRight: 'right',\n\t\t\tpaddingBottom: 'bottom',\n\t\t\tpaddingLeft: 'left',\n\t\t},\n\t\tuseEngine: true,\n\t},\n\ttextDecoration: {\n\t\tvalue: [ 'typography', 'textDecoration' ],\n\t\tsupport: [ 'typography', '__experimentalTextDecoration' ],\n\t\tuseEngine: true,\n\t},\n\ttextTransform: {\n\t\tvalue: [ 'typography', 'textTransform' ],\n\t\tsupport: [ 'typography', '__experimentalTextTransform' ],\n\t\tuseEngine: true,\n\t},\n\tletterSpacing: {\n\t\tvalue: [ 'typography', 'letterSpacing' ],\n\t\tsupport: [ 'typography', '__experimentalLetterSpacing' ],\n\t\tuseEngine: true,\n\t},\n\t'--wp--style--root--padding': {\n\t\tvalue: [ 'spacing', 'padding' ],\n\t\tsupport: [ 'spacing', 'padding' ],\n\t\tproperties: {\n\t\t\t'--wp--style--root--padding-top': 'top',\n\t\t\t'--wp--style--root--padding-right': 'right',\n\t\t\t'--wp--style--root--padding-bottom': 'bottom',\n\t\t\t'--wp--style--root--padding-left': 'left',\n\t\t},\n\t\trootOnly: true,\n\t},\n};\n\nexport const __EXPERIMENTAL_ELEMENTS = {\n\tlink: 'a',\n\theading: 'h1, h2, h3, h4, h5, h6',\n\th1: 'h1',\n\th2: 'h2',\n\th3: 'h3',\n\th4: 'h4',\n\th5: 'h5',\n\th6: 'h6',\n\tbutton: '.wp-element-button, .wp-block-button__link',\n\tcaption:\n\t\t'.wp-element-caption, .wp-block-audio figcaption, .wp-block-embed figcaption, .wp-block-gallery figcaption, .wp-block-image figcaption, .wp-block-table figcaption, .wp-block-video figcaption',\n\tcite: 'cite',\n};\n\nexport const __EXPERIMENTAL_PATHS_WITH_MERGE = {\n\t'color.duotone': true,\n\t'color.gradients': true,\n\t'color.palette': true,\n\t'typography.fontFamilies': true,\n\t'typography.fontSizes': true,\n\t'spacing.spacingSizes': true,\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * Locale character mapping rules.\n */\ninterface Locale {\n regexp: RegExp;\n map: Record<string, string>;\n}\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nconst SUPPORTED_LOCALE: Record<string, Locale> = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str: string, locale: string) {\n const lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang) return lowerCase(str.replace(lang.regexp, (m) => lang.map[m]));\n return lowerCase(str);\n}\n\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str: string) {\n return str.toLowerCase();\n}\n","import { lowerCase } from \"lower-case\";\n\nexport interface Options {\n splitRegexp?: RegExp | RegExp[];\n stripRegexp?: RegExp | RegExp[];\n delimiter?: string;\n transform?: (part: string, index: number, parts: string[]) => string;\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nconst DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n\n// Remove all non-word characters.\nconst DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input: string, options: Options = {}) {\n const {\n splitRegexp = DEFAULT_SPLIT_REGEXP,\n stripRegexp = DEFAULT_STRIP_REGEXP,\n transform = lowerCase,\n delimiter = \" \",\n } = options;\n\n let result = replace(\n replace(input, splitRegexp, \"$1\\0$2\"),\n stripRegexp,\n \"\\0\"\n );\n let start = 0;\n let end = result.length;\n\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\") start++;\n while (result.charAt(end - 1) === \"\\0\") end--;\n\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input: string, re: RegExp | RegExp[], value: string) {\n if (re instanceof RegExp) return input.replace(re, value);\n return re.reduce((input, re) => input.replace(re, value), input);\n}\n","import { noCase, Options } from \"no-case\";\n\nexport { Options };\n\nexport function pascalCaseTransform(input: string, index: number) {\n const firstChar = input.charAt(0);\n const lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return `_${firstChar}${lowerChars}`;\n }\n return `${firstChar.toUpperCase()}${lowerChars}`;\n}\n\nexport function pascalCaseTransformMerge(input: string) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\n\nexport function pascalCase(input: string, options: Options = {}) {\n return noCase(input, {\n delimiter: \"\",\n transform: pascalCaseTransform,\n ...options,\n });\n}\n","import {\n pascalCase,\n pascalCaseTransform,\n pascalCaseTransformMerge,\n Options,\n} from \"pascal-case\";\n\nexport { Options };\n\nexport function camelCaseTransform(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\n\nexport function camelCaseTransformMerge(input: string, index: number) {\n if (index === 0) return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\n\nexport function camelCase(input: string, options: Options = {}) {\n return pascalCase(input, {\n transform: camelCaseTransform,\n ...options,\n });\n}\n","/* eslint no-console: [ 'error', { allow: [ 'error', 'warn' ] } ] */\n\n/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { select, dispatch } from '@wordpress/data';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport i18nBlockSchema from './i18n-block.json';\nimport { BLOCK_ICON_DEFAULT } from './constants';\nimport { store as blocksStore } from '../store';\n\n/**\n * An icon type definition. One of a Dashicon slug, an element,\n * or a component.\n *\n * @typedef {(string|WPElement|WPComponent)} WPIcon\n *\n * @see https://developer.wordpress.org/resource/dashicons/\n */\n\n/**\n * Render behavior of a block type icon; one of a Dashicon slug, an element,\n * or a component.\n *\n * @typedef {WPIcon} WPBlockTypeIconRender\n */\n\n/**\n * An object describing a normalized block type icon.\n *\n * @typedef {Object} WPBlockTypeIconDescriptor\n *\n * @property {WPBlockTypeIconRender} src Render behavior of the icon,\n * one of a Dashicon slug, an\n * element, or a component.\n * @property {string} background Optimal background hex string\n * color when displaying icon.\n * @property {string} foreground Optimal foreground hex string\n * color when displaying icon.\n * @property {string} shadowColor Optimal shadow hex string\n * color when displaying icon.\n */\n\n/**\n * Value to use to render the icon for a block type in an editor interface,\n * either a Dashicon slug, an element, a component, or an object describing\n * the icon.\n *\n * @typedef {(WPBlockTypeIconDescriptor|WPBlockTypeIconRender)} WPBlockTypeIcon\n */\n\n/**\n * Named block variation scopes.\n *\n * @typedef {'block'|'inserter'|'transform'} WPBlockVariationScope\n */\n\n/**\n * An object describing a variation defined for the block type.\n *\n * @typedef {Object} WPBlockVariation\n *\n * @property {string} name The unique and machine-readable name.\n * @property {string} title A human-readable variation title.\n * @property {string} [description] A detailed variation description.\n * @property {string} [category] Block type category classification,\n * used in search interfaces to arrange\n * block types by category.\n * @property {WPIcon} [icon] An icon helping to visualize the variation.\n * @property {boolean} [isDefault] Indicates whether the current variation is\n * the default one. Defaults to `false`.\n * @property {Object} [attributes] Values which override block attributes.\n * @property {Array[]} [innerBlocks] Initial configuration of nested blocks.\n * @property {Object} [example] Example provides structured data for\n * the block preview. You can set to\n * `undefined` to disable the preview shown\n * for the block type.\n * @property {WPBlockVariationScope[]} [scope] The list of scopes where the variation\n * is applicable. When not provided, it\n * assumes all available scopes.\n * @property {string[]} [keywords] An array of terms (which can be translated)\n * that help users discover the variation\n * while searching.\n * @property {Function|string[]} [isActive] This can be a function or an array of block attributes.\n * Function that accepts a block's attributes and the\n * variation's attributes and determines if a variation is active.\n * This function doesn't try to find a match dynamically based\n * on all block's attributes, as in many cases some attributes are irrelevant.\n * An example would be for `embed` block where we only care\n * about `providerNameSlug` attribute's value.\n * We can also use a `string[]` to tell which attributes\n * should be compared as a shorthand. Each attributes will\n * be matched and the variation will be active if all of them are matching.\n */\n\n/**\n * Defined behavior of a block type.\n *\n * @typedef {Object} WPBlockType\n *\n * @property {string} name Block type's namespaced name.\n * @property {string} title Human-readable block type label.\n * @property {string} [description] A detailed block type description.\n * @property {string} [category] Block type category classification,\n * used in search interfaces to arrange\n * block types by category.\n * @property {WPBlockTypeIcon} [icon] Block type icon.\n * @property {string[]} [keywords] Additional keywords to produce block\n * type as result in search interfaces.\n * @property {Object} [attributes] Block type attributes.\n * @property {WPComponent} [save] Optional component describing\n * serialized markup structure of a\n * block type.\n * @property {WPComponent} edit Component rendering an element to\n * manipulate the attributes of a block\n * in the context of an editor.\n * @property {WPBlockVariation[]} [variations] The list of block variations.\n * @property {Object} [example] Example provides structured data for\n * the block preview. When not defined\n * then no preview is shown.\n */\n\nexport const serverSideBlockDefinitions = {};\n\nfunction isObject( object ) {\n\treturn object !== null && typeof object === 'object';\n}\n\n/**\n * Sets the server side block definition of blocks.\n *\n * @param {Object} definitions Server-side block definitions\n */\n// eslint-disable-next-line camelcase\nexport function unstable__bootstrapServerSideBlockDefinitions( definitions ) {\n\tfor ( const blockName of Object.keys( definitions ) ) {\n\t\t// Don't overwrite if already set. It covers the case when metadata\n\t\t// was initialized from the server.\n\t\tif ( serverSideBlockDefinitions[ blockName ] ) {\n\t\t\t// We still need to polyfill `apiVersion` for WordPress version\n\t\t\t// lower than 5.7. If it isn't present in the definition shared\n\t\t\t// from the server, we try to fallback to the definition passed.\n\t\t\t// @see https://github.com/WordPress/gutenberg/pull/29279\n\t\t\tif (\n\t\t\t\tserverSideBlockDefinitions[ blockName ].apiVersion ===\n\t\t\t\t\tundefined &&\n\t\t\t\tdefinitions[ blockName ].apiVersion\n\t\t\t) {\n\t\t\t\tserverSideBlockDefinitions[ blockName ].apiVersion =\n\t\t\t\t\tdefinitions[ blockName ].apiVersion;\n\t\t\t}\n\t\t\t// The `ancestor` prop is not included in the definitions shared\n\t\t\t// from the server yet, so it needs to be polyfilled as well.\n\t\t\t// @see https://github.com/WordPress/gutenberg/pull/39894\n\t\t\tif (\n\t\t\t\tserverSideBlockDefinitions[ blockName ].ancestor ===\n\t\t\t\t\tundefined &&\n\t\t\t\tdefinitions[ blockName ].ancestor\n\t\t\t) {\n\t\t\t\tserverSideBlockDefinitions[ blockName ].ancestor =\n\t\t\t\t\tdefinitions[ blockName ].ancestor;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tserverSideBlockDefinitions[ blockName ] = Object.fromEntries(\n\t\t\tObject.entries( definitions[ blockName ] )\n\t\t\t\t.filter(\n\t\t\t\t\t( [ , value ] ) => value !== null && value !== undefined\n\t\t\t\t)\n\t\t\t\t.map( ( [ key, value ] ) => [ camelCase( key ), value ] )\n\t\t);\n\t}\n}\n\n/**\n * Gets block settings from metadata loaded from `block.json` file.\n *\n * @param {Object} metadata Block metadata loaded from `block.json`.\n * @param {string} metadata.textdomain Textdomain to use with translations.\n *\n * @return {Object} Block settings.\n */\nfunction getBlockSettingsFromMetadata( { textdomain, ...metadata } ) {\n\tconst allowedFields = [\n\t\t'apiVersion',\n\t\t'title',\n\t\t'category',\n\t\t'parent',\n\t\t'ancestor',\n\t\t'icon',\n\t\t'description',\n\t\t'keywords',\n\t\t'attributes',\n\t\t'providesContext',\n\t\t'usesContext',\n\t\t'supports',\n\t\t'styles',\n\t\t'example',\n\t\t'variations',\n\t];\n\n\tconst settings = Object.fromEntries(\n\t\tObject.entries( metadata ).filter( ( [ key ] ) =>\n\t\t\tallowedFields.includes( key )\n\t\t)\n\t);\n\n\tif ( textdomain ) {\n\t\tObject.keys( i18nBlockSchema ).forEach( ( key ) => {\n\t\t\tif ( ! settings[ key ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettings[ key ] = translateBlockSettingUsingI18nSchema(\n\t\t\t\ti18nBlockSchema[ key ],\n\t\t\t\tsettings[ key ],\n\t\t\t\ttextdomain\n\t\t\t);\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Registers a new block provided a unique name and an object defining its\n * behavior. Once registered, the block is made available as an option to any\n * editor interface where blocks are implemented.\n *\n * For more in-depth information on registering a custom block see the [Create a block tutorial](docs/how-to-guides/block-tutorial/README.md)\n *\n * @param {string|Object} blockNameOrMetadata Block type name or its metadata.\n * @param {Object} settings Block settings.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { registerBlockType } from '@wordpress/blocks'\n *\n * registerBlockType( 'namespace/block-name', {\n * title: __( 'My First Block' ),\n * edit: () => <div>{ __( 'Hello from the editor!' ) }</div>,\n * save: () => <div>Hello from the saved content!</div>,\n * } );\n * ```\n *\n * @return {?WPBlockType} The block, if it has been successfully registered;\n * otherwise `undefined`.\n */\nexport function registerBlockType( blockNameOrMetadata, settings ) {\n\tconst name = isObject( blockNameOrMetadata )\n\t\t? blockNameOrMetadata.name\n\t\t: blockNameOrMetadata;\n\n\tif ( typeof name !== 'string' ) {\n\t\tconsole.error( 'Block names must be strings.' );\n\t\treturn;\n\t}\n\n\tif ( ! /^[a-z][a-z0-9-]*\\/[a-z][a-z0-9-]*$/.test( name ) ) {\n\t\tconsole.error(\n\t\t\t'Block names must contain a namespace prefix, include only lowercase alphanumeric characters or dashes, and start with a letter. Example: my-plugin/my-custom-block'\n\t\t);\n\t\treturn;\n\t}\n\tif ( select( blocksStore ).getBlockType( name ) ) {\n\t\tconsole.error( 'Block \"' + name + '\" is already registered.' );\n\t\treturn;\n\t}\n\n\tif ( isObject( blockNameOrMetadata ) ) {\n\t\tunstable__bootstrapServerSideBlockDefinitions( {\n\t\t\t[ name ]: getBlockSettingsFromMetadata( blockNameOrMetadata ),\n\t\t} );\n\t}\n\n\tconst blockType = {\n\t\tname,\n\t\ticon: BLOCK_ICON_DEFAULT,\n\t\tkeywords: [],\n\t\tattributes: {},\n\t\tprovidesContext: {},\n\t\tusesContext: [],\n\t\tsupports: {},\n\t\tstyles: [],\n\t\tvariations: [],\n\t\tsave: () => null,\n\t\t...serverSideBlockDefinitions?.[ name ],\n\t\t...settings,\n\t};\n\n\tdispatch( blocksStore ).__experimentalRegisterBlockType( blockType );\n\n\treturn select( blocksStore ).getBlockType( name );\n}\n\n/**\n * Translates block settings provided with metadata using the i18n schema.\n *\n * @param {string|string[]|Object[]} i18nSchema I18n schema for the block setting.\n * @param {string|string[]|Object[]} settingValue Value for the block setting.\n * @param {string} textdomain Textdomain to use with translations.\n *\n * @return {string|string[]|Object[]} Translated setting.\n */\nfunction translateBlockSettingUsingI18nSchema(\n\ti18nSchema,\n\tsettingValue,\n\ttextdomain\n) {\n\tif ( typeof i18nSchema === 'string' && typeof settingValue === 'string' ) {\n\t\t// eslint-disable-next-line @wordpress/i18n-no-variables, @wordpress/i18n-text-domain\n\t\treturn _x( settingValue, i18nSchema, textdomain );\n\t}\n\tif (\n\t\tArray.isArray( i18nSchema ) &&\n\t\ti18nSchema.length &&\n\t\tArray.isArray( settingValue )\n\t) {\n\t\treturn settingValue.map( ( value ) =>\n\t\t\ttranslateBlockSettingUsingI18nSchema(\n\t\t\t\ti18nSchema[ 0 ],\n\t\t\t\tvalue,\n\t\t\t\ttextdomain\n\t\t\t)\n\t\t);\n\t}\n\tif (\n\t\tisObject( i18nSchema ) &&\n\t\tObject.entries( i18nSchema ).length &&\n\t\tisObject( settingValue )\n\t) {\n\t\treturn Object.keys( settingValue ).reduce( ( accumulator, key ) => {\n\t\t\tif ( ! i18nSchema[ key ] ) {\n\t\t\t\taccumulator[ key ] = settingValue[ key ];\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\taccumulator[ key ] = translateBlockSettingUsingI18nSchema(\n\t\t\t\ti18nSchema[ key ],\n\t\t\t\tsettingValue[ key ],\n\t\t\t\ttextdomain\n\t\t\t);\n\t\t\treturn accumulator;\n\t\t}, {} );\n\t}\n\treturn settingValue;\n}\n\n/**\n * Registers a new block collection to group blocks in the same namespace in the inserter.\n *\n * @param {string} namespace The namespace to group blocks by in the inserter; corresponds to the block namespace.\n * @param {Object} settings The block collection settings.\n * @param {string} settings.title The title to display in the block inserter.\n * @param {Object} [settings.icon] The icon to display in the block inserter.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { registerBlockCollection, registerBlockType } from '@wordpress/blocks';\n *\n * // Register the collection.\n * registerBlockCollection( 'my-collection', {\n * title: __( 'Custom Collection' ),\n * } );\n *\n * // Register a block in the same namespace to add it to the collection.\n * registerBlockType( 'my-collection/block-name', {\n * title: __( 'My First Block' ),\n * edit: () => <div>{ __( 'Hello from the editor!' ) }</div>,\n * save: () => <div>'Hello from the saved content!</div>,\n * } );\n * ```\n */\nexport function registerBlockCollection( namespace, { title, icon } ) {\n\tdispatch( blocksStore ).addBlockCollection( namespace, title, icon );\n}\n\n/**\n * Unregisters a block collection\n *\n * @param {string} namespace The namespace to group blocks by in the inserter; corresponds to the block namespace\n *\n * @example\n * ```js\n * import { unregisterBlockCollection } from '@wordpress/blocks';\n *\n * unregisterBlockCollection( 'my-collection' );\n * ```\n */\nexport function unregisterBlockCollection( namespace ) {\n\tdispatch( blocksStore ).removeBlockCollection( namespace );\n}\n\n/**\n * Unregisters a block.\n *\n * @param {string} name Block name.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { unregisterBlockType } from '@wordpress/blocks';\n *\n * const ExampleComponent = () => {\n * return (\n * <Button\n * onClick={ () =>\n * unregisterBlockType( 'my-collection/block-name' )\n * }\n * >\n * { __( 'Unregister my custom block.' ) }\n * </Button>\n * );\n * };\n * ```\n *\n * @return {?WPBlockType} The previous block value, if it has been successfully\n * unregistered; otherwise `undefined`.\n */\nexport function unregisterBlockType( name ) {\n\tconst oldBlock = select( blocksStore ).getBlockType( name );\n\tif ( ! oldBlock ) {\n\t\tconsole.error( 'Block \"' + name + '\" is not registered.' );\n\t\treturn;\n\t}\n\tdispatch( blocksStore ).removeBlockTypes( name );\n\treturn oldBlock;\n}\n\n/**\n * Assigns name of block for handling non-block content.\n *\n * @param {string} blockName Block name.\n */\nexport function setFreeformContentHandlerName( blockName ) {\n\tdispatch( blocksStore ).setFreeformFallbackBlockName( blockName );\n}\n\n/**\n * Retrieves name of block handling non-block content, or undefined if no\n * handler has been defined.\n *\n * @return {?string} Block name.\n */\nexport function getFreeformContentHandlerName() {\n\treturn select( blocksStore ).getFreeformFallbackBlockName();\n}\n\n/**\n * Retrieves name of block used for handling grouping interactions.\n *\n * @return {?string} Block name.\n */\nexport function getGroupingBlockName() {\n\treturn select( blocksStore ).getGroupingBlockName();\n}\n\n/**\n * Assigns name of block handling unregistered block types.\n *\n * @param {string} blockName Block name.\n */\nexport function setUnregisteredTypeHandlerName( blockName ) {\n\tdispatch( blocksStore ).setUnregisteredFallbackBlockName( blockName );\n}\n\n/**\n * Retrieves name of block handling unregistered block types, or undefined if no\n * handler has been defined.\n *\n * @return {?string} Block name.\n */\nexport function getUnregisteredTypeHandlerName() {\n\treturn select( blocksStore ).getUnregisteredFallbackBlockName();\n}\n\n/**\n * Assigns the default block name.\n *\n * @param {string} name Block name.\n *\n * @example\n * ```js\n * import { setDefaultBlockName } from '@wordpress/blocks';\n *\n * const ExampleComponent = () => {\n *\n * return (\n * <Button onClick={ () => setDefaultBlockName( 'core/heading' ) }>\n * { __( 'Set the default block to Heading' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport function setDefaultBlockName( name ) {\n\tdispatch( blocksStore ).setDefaultBlockName( name );\n}\n\n/**\n * Assigns name of block for handling block grouping interactions.\n *\n * @param {string} name Block name.\n *\n * @example\n * ```js\n * import { setGroupingBlockName } from '@wordpress/blocks';\n *\n * const ExampleComponent = () => {\n *\n * return (\n * <Button onClick={ () => setGroupingBlockName( 'core/columns' ) }>\n * { __( 'Set the default block to Heading' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport function setGroupingBlockName( name ) {\n\tdispatch( blocksStore ).setGroupingBlockName( name );\n}\n\n/**\n * Retrieves the default block name.\n *\n * @return {?string} Block name.\n */\nexport function getDefaultBlockName() {\n\treturn select( blocksStore ).getDefaultBlockName();\n}\n\n/**\n * Returns a registered block type.\n *\n * @param {string} name Block name.\n *\n * @return {?Object} Block type.\n */\nexport function getBlockType( name ) {\n\treturn select( blocksStore )?.getBlockType( name );\n}\n\n/**\n * Returns all registered blocks.\n *\n * @return {Array} Block settings.\n */\nexport function getBlockTypes() {\n\treturn select( blocksStore ).getBlockTypes();\n}\n\n/**\n * Returns the block support value for a feature, if defined.\n *\n * @param {(string|Object)} nameOrType Block name or type object\n * @param {string} feature Feature to retrieve\n * @param {*} defaultSupports Default value to return if not\n * explicitly defined\n *\n * @return {?*} Block support value\n */\nexport function getBlockSupport( nameOrType, feature, defaultSupports ) {\n\treturn select( blocksStore ).getBlockSupport(\n\t\tnameOrType,\n\t\tfeature,\n\t\tdefaultSupports\n\t);\n}\n\n/**\n * Returns true if the block defines support for a feature, or false otherwise.\n *\n * @param {(string|Object)} nameOrType Block name or type object.\n * @param {string} feature Feature to test.\n * @param {boolean} defaultSupports Whether feature is supported by\n * default if not explicitly defined.\n *\n * @return {boolean} Whether block supports feature.\n */\nexport function hasBlockSupport( nameOrType, feature, defaultSupports ) {\n\treturn select( blocksStore ).hasBlockSupport(\n\t\tnameOrType,\n\t\tfeature,\n\t\tdefaultSupports\n\t);\n}\n\n/**\n * Determines whether or not the given block is a reusable block. This is a\n * special block type that is used to point to a global block stored via the\n * API.\n *\n * @param {Object} blockOrType Block or Block Type to test.\n *\n * @return {boolean} Whether the given block is a reusable block.\n */\nexport function isReusableBlock( blockOrType ) {\n\treturn blockOrType?.name === 'core/block';\n}\n\n/**\n * Determines whether or not the given block is a template part. This is a\n * special block type that allows composing a page template out of reusable\n * design elements.\n *\n * @param {Object} blockOrType Block or Block Type to test.\n *\n * @return {boolean} Whether the given block is a template part.\n */\nexport function isTemplatePart( blockOrType ) {\n\treturn blockOrType.name === 'core/template-part';\n}\n\n/**\n * Returns an array with the child blocks of a given block.\n *\n * @param {string} blockName Name of block (example: “latest-posts”).\n *\n * @return {Array} Array of child block names.\n */\nexport const getChildBlockNames = ( blockName ) => {\n\treturn select( blocksStore ).getChildBlockNames( blockName );\n};\n\n/**\n * Returns a boolean indicating if a block has child blocks or not.\n *\n * @param {string} blockName Name of block (example: “latest-posts”).\n *\n * @return {boolean} True if a block contains child blocks and false otherwise.\n */\nexport const hasChildBlocks = ( blockName ) => {\n\treturn select( blocksStore ).hasChildBlocks( blockName );\n};\n\n/**\n * Returns a boolean indicating if a block has at least one child block with inserter support.\n *\n * @param {string} blockName Block type name.\n *\n * @return {boolean} True if a block contains at least one child blocks with inserter support\n * and false otherwise.\n */\nexport const hasChildBlocksWithInserterSupport = ( blockName ) => {\n\treturn select( blocksStore ).hasChildBlocksWithInserterSupport( blockName );\n};\n\n/**\n * Registers a new block style variation for the given block.\n *\n * For more information on connecting the styles with CSS [the official documentation](/docs/reference-guides/block-api/block-styles.md#styles)\n *\n * @param {string} blockName Name of block (example: “core/latest-posts”).\n * @param {Object} styleVariation Object containing `name` which is the class name applied to the block and `label` which identifies the variation to the user.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { registerBlockStyle } from '@wordpress/blocks';\n * import { Button } from '@wordpress/components';\n *\n *\n * const ExampleComponent = () => {\n * return (\n * <Button\n * onClick={ () => {\n * registerBlockStyle( 'core/quote', {\n * name: 'fancy-quote',\n * label: __( 'Fancy Quote' ),\n * } );\n * } }\n * >\n * { __( 'Add a new block style for core/quote' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport const registerBlockStyle = ( blockName, styleVariation ) => {\n\tdispatch( blocksStore ).addBlockStyles( blockName, styleVariation );\n};\n\n/**\n * Unregisters a block style variation for the given block.\n *\n * @param {string} blockName Name of block (example: “core/latest-posts”).\n * @param {string} styleVariationName Name of class applied to the block.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { unregisterBlockStyle } from '@wordpress/blocks';\n * import { Button } from '@wordpress/components';\n *\n * const ExampleComponent = () => {\n * return (\n * <Button\n * onClick={ () => {\n * unregisterBlockStyle( 'core/quote', 'plain' );\n * } }\n * >\n * { __( 'Remove the \"Plain\" block style for core/quote' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport const unregisterBlockStyle = ( blockName, styleVariationName ) => {\n\tdispatch( blocksStore ).removeBlockStyles( blockName, styleVariationName );\n};\n\n/**\n * Returns an array with the variations of a given block type.\n * Ignored from documentation as the recommended usage is via useSelect from @wordpress/data.\n *\n * @ignore\n *\n * @param {string} blockName Name of block (example: “core/columns”).\n * @param {WPBlockVariationScope} [scope] Block variation scope name.\n *\n * @return {(WPBlockVariation[]|void)} Block variations.\n */\nexport const getBlockVariations = ( blockName, scope ) => {\n\treturn select( blocksStore ).getBlockVariations( blockName, scope );\n};\n\n/**\n * Registers a new block variation for the given block type.\n *\n * For more information on block variations see [the official documentation ](/docs/reference-guides/block-api/block-variations.md)\n *\n * @param {string} blockName Name of the block (example: “core/columns”).\n * @param {WPBlockVariation} variation Object describing a block variation.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { registerBlockVariation } from '@wordpress/blocks';\n * import { Button } from '@wordpress/components';\n *\n * const ExampleComponent = () => {\n * return (\n * <Button\n * onClick={ () => {\n * registerBlockVariation( 'core/embed', {\n * name: 'custom',\n * title: __( 'My Custom Embed' ),\n * attributes: { providerNameSlug: 'custom' },\n * } );\n * } }\n * >\n * __( 'Add a custom variation for core/embed' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport const registerBlockVariation = ( blockName, variation ) => {\n\tdispatch( blocksStore ).addBlockVariations( blockName, variation );\n};\n\n/**\n * Unregisters a block variation defined for the given block type.\n *\n * @param {string} blockName Name of the block (example: “core/columns”).\n * @param {string} variationName Name of the variation defined for the block.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { unregisterBlockVariation } from '@wordpress/blocks';\n * import { Button } from '@wordpress/components';\n *\n * const ExampleComponent = () => {\n * return (\n * <Button\n * onClick={ () => {\n * unregisterBlockVariation( 'core/embed', 'youtube' );\n * } }\n * >\n * { __( 'Remove the YouTube variation from core/embed' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport const unregisterBlockVariation = ( blockName, variationName ) => {\n\tdispatch( blocksStore ).removeBlockVariations( blockName, variationName );\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"hooks\"];","/**\n * External dependencies\n */\nimport { v4 as uuid } from 'uuid';\n\n/**\n * WordPress dependencies\n */\nimport { createHooks, applyFilters } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockType,\n\tgetBlockTypes,\n\tgetGroupingBlockName,\n} from './registration';\nimport {\n\tnormalizeBlockType,\n\t__experimentalSanitizeBlockAttributes,\n} from './utils';\n\n/**\n * Returns a block object given its type and attributes.\n *\n * @param {string} name Block name.\n * @param {Object} attributes Block attributes.\n * @param {?Array} innerBlocks Nested blocks.\n *\n * @return {Object} Block object.\n */\nexport function createBlock( name, attributes = {}, innerBlocks = [] ) {\n\tconst sanitizedAttributes = __experimentalSanitizeBlockAttributes(\n\t\tname,\n\t\tattributes\n\t);\n\n\tconst clientId = uuid();\n\n\t// Blocks are stored with a unique ID, the assigned type name, the block\n\t// attributes, and their inner blocks.\n\treturn {\n\t\tclientId,\n\t\tname,\n\t\tisValid: true,\n\t\tattributes: sanitizedAttributes,\n\t\tinnerBlocks,\n\t};\n}\n\n/**\n * Given an array of InnerBlocks templates or Block Objects,\n * returns an array of created Blocks from them.\n * It handles the case of having InnerBlocks as Blocks by\n * converting them to the proper format to continue recursively.\n *\n * @param {Array} innerBlocksOrTemplate Nested blocks or InnerBlocks templates.\n *\n * @return {Object[]} Array of Block objects.\n */\nexport function createBlocksFromInnerBlocksTemplate(\n\tinnerBlocksOrTemplate = []\n) {\n\treturn innerBlocksOrTemplate.map( ( innerBlock ) => {\n\t\tconst innerBlockTemplate = Array.isArray( innerBlock )\n\t\t\t? innerBlock\n\t\t\t: [\n\t\t\t\t\tinnerBlock.name,\n\t\t\t\t\tinnerBlock.attributes,\n\t\t\t\t\tinnerBlock.innerBlocks,\n\t\t\t ];\n\t\tconst [ name, attributes, innerBlocks = [] ] = innerBlockTemplate;\n\t\treturn createBlock(\n\t\t\tname,\n\t\t\tattributes,\n\t\t\tcreateBlocksFromInnerBlocksTemplate( innerBlocks )\n\t\t);\n\t} );\n}\n\n/**\n * Given a block object, returns a copy of the block object while sanitizing its attributes,\n * optionally merging new attributes and/or replacing its inner blocks.\n *\n * @param {Object} block Block instance.\n * @param {Object} mergeAttributes Block attributes.\n * @param {?Array} newInnerBlocks Nested blocks.\n *\n * @return {Object} A cloned block.\n */\nexport function __experimentalCloneSanitizedBlock(\n\tblock,\n\tmergeAttributes = {},\n\tnewInnerBlocks\n) {\n\tconst clientId = uuid();\n\n\tconst sanitizedAttributes = __experimentalSanitizeBlockAttributes(\n\t\tblock.name,\n\t\t{\n\t\t\t...block.attributes,\n\t\t\t...mergeAttributes,\n\t\t}\n\t);\n\n\treturn {\n\t\t...block,\n\t\tclientId,\n\t\tattributes: sanitizedAttributes,\n\t\tinnerBlocks:\n\t\t\tnewInnerBlocks ||\n\t\t\tblock.innerBlocks.map( ( innerBlock ) =>\n\t\t\t\t__experimentalCloneSanitizedBlock( innerBlock )\n\t\t\t),\n\t};\n}\n\n/**\n * Given a block object, returns a copy of the block object,\n * optionally merging new attributes and/or replacing its inner blocks.\n *\n * @param {Object} block Block instance.\n * @param {Object} mergeAttributes Block attributes.\n * @param {?Array} newInnerBlocks Nested blocks.\n *\n * @return {Object} A cloned block.\n */\nexport function cloneBlock( block, mergeAttributes = {}, newInnerBlocks ) {\n\tconst clientId = uuid();\n\n\treturn {\n\t\t...block,\n\t\tclientId,\n\t\tattributes: {\n\t\t\t...block.attributes,\n\t\t\t...mergeAttributes,\n\t\t},\n\t\tinnerBlocks:\n\t\t\tnewInnerBlocks ||\n\t\t\tblock.innerBlocks.map( ( innerBlock ) => cloneBlock( innerBlock ) ),\n\t};\n}\n\n/**\n * Returns a boolean indicating whether a transform is possible based on\n * various bits of context.\n *\n * @param {Object} transform The transform object to validate.\n * @param {string} direction Is this a 'from' or 'to' transform.\n * @param {Array} blocks The blocks to transform from.\n *\n * @return {boolean} Is the transform possible?\n */\nconst isPossibleTransformForSource = ( transform, direction, blocks ) => {\n\tif ( ! blocks.length ) {\n\t\treturn false;\n\t}\n\n\t// If multiple blocks are selected, only multi block transforms\n\t// or wildcard transforms are allowed.\n\tconst isMultiBlock = blocks.length > 1;\n\tconst firstBlockName = blocks[ 0 ].name;\n\tconst isValidForMultiBlocks =\n\t\tisWildcardBlockTransform( transform ) ||\n\t\t! isMultiBlock ||\n\t\ttransform.isMultiBlock;\n\tif ( ! isValidForMultiBlocks ) {\n\t\treturn false;\n\t}\n\n\t// Check non-wildcard transforms to ensure that transform is valid\n\t// for a block selection of multiple blocks of different types.\n\tif (\n\t\t! isWildcardBlockTransform( transform ) &&\n\t\t! blocks.every( ( block ) => block.name === firstBlockName )\n\t) {\n\t\treturn false;\n\t}\n\n\t// Only consider 'block' type transforms as valid.\n\tconst isBlockType = transform.type === 'block';\n\tif ( ! isBlockType ) {\n\t\treturn false;\n\t}\n\n\t// Check if the transform's block name matches the source block (or is a wildcard)\n\t// only if this is a transform 'from'.\n\tconst sourceBlock = blocks[ 0 ];\n\tconst hasMatchingName =\n\t\tdirection !== 'from' ||\n\t\ttransform.blocks.indexOf( sourceBlock.name ) !== -1 ||\n\t\tisWildcardBlockTransform( transform );\n\tif ( ! hasMatchingName ) {\n\t\treturn false;\n\t}\n\n\t// Don't allow single Grouping blocks to be transformed into\n\t// a Grouping block.\n\tif (\n\t\t! isMultiBlock &&\n\t\tdirection === 'from' &&\n\t\tisContainerGroupBlock( sourceBlock.name ) &&\n\t\tisContainerGroupBlock( transform.blockName )\n\t) {\n\t\treturn false;\n\t}\n\n\t// If the transform has a `isMatch` function specified, check that it returns true.\n\tif ( ! maybeCheckTransformIsMatch( transform, blocks ) ) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\ttransform.usingMobileTransformations &&\n\t\tisWildcardBlockTransform( transform ) &&\n\t\t! isContainerGroupBlock( sourceBlock.name )\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n * Returns block types that the 'blocks' can be transformed into, based on\n * 'from' transforms on other blocks.\n *\n * @param {Array} blocks The blocks to transform from.\n *\n * @return {Array} Block types that the blocks can be transformed into.\n */\nconst getBlockTypesForPossibleFromTransforms = ( blocks ) => {\n\tif ( ! blocks.length ) {\n\t\treturn [];\n\t}\n\n\tconst allBlockTypes = getBlockTypes();\n\n\t// filter all blocks to find those with a 'from' transform.\n\tconst blockTypesWithPossibleFromTransforms = allBlockTypes.filter(\n\t\t( blockType ) => {\n\t\t\tconst fromTransforms = getBlockTransforms( 'from', blockType.name );\n\t\t\treturn !! findTransform( fromTransforms, ( transform ) => {\n\t\t\t\treturn isPossibleTransformForSource(\n\t\t\t\t\ttransform,\n\t\t\t\t\t'from',\n\t\t\t\t\tblocks\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t);\n\n\treturn blockTypesWithPossibleFromTransforms;\n};\n\n/**\n * Returns block types that the 'blocks' can be transformed into, based on\n * the source block's own 'to' transforms.\n *\n * @param {Array} blocks The blocks to transform from.\n *\n * @return {Array} Block types that the source can be transformed into.\n */\nconst getBlockTypesForPossibleToTransforms = ( blocks ) => {\n\tif ( ! blocks.length ) {\n\t\treturn [];\n\t}\n\n\tconst sourceBlock = blocks[ 0 ];\n\tconst blockType = getBlockType( sourceBlock.name );\n\tconst transformsTo = blockType\n\t\t? getBlockTransforms( 'to', blockType.name )\n\t\t: [];\n\n\t// filter all 'to' transforms to find those that are possible.\n\tconst possibleTransforms = transformsTo.filter( ( transform ) => {\n\t\treturn (\n\t\t\ttransform && isPossibleTransformForSource( transform, 'to', blocks )\n\t\t);\n\t} );\n\n\t// Build a list of block names using the possible 'to' transforms.\n\tconst blockNames = possibleTransforms\n\t\t.map( ( transformation ) => transformation.blocks )\n\t\t.flat();\n\n\t// Map block names to block types.\n\treturn blockNames.map( ( name ) =>\n\t\tname === '*' ? name : getBlockType( name )\n\t);\n};\n\n/**\n * Determines whether transform is a \"block\" type\n * and if so whether it is a \"wildcard\" transform\n * ie: targets \"any\" block type\n *\n * @param {Object} t the Block transform object\n *\n * @return {boolean} whether transform is a wildcard transform\n */\nexport const isWildcardBlockTransform = ( t ) =>\n\tt &&\n\tt.type === 'block' &&\n\tArray.isArray( t.blocks ) &&\n\tt.blocks.includes( '*' );\n\n/**\n * Determines whether the given Block is the core Block which\n * acts as a container Block for other Blocks as part of the\n * Grouping mechanics\n *\n * @param {string} name the name of the Block to test against\n *\n * @return {boolean} whether or not the Block is the container Block type\n */\nexport const isContainerGroupBlock = ( name ) =>\n\tname === getGroupingBlockName();\n\n/**\n * Returns an array of block types that the set of blocks received as argument\n * can be transformed into.\n *\n * @param {Array} blocks Blocks array.\n *\n * @return {Array} Block types that the blocks argument can be transformed to.\n */\nexport function getPossibleBlockTransformations( blocks ) {\n\tif ( ! blocks.length ) {\n\t\treturn [];\n\t}\n\n\tconst blockTypesForFromTransforms =\n\t\tgetBlockTypesForPossibleFromTransforms( blocks );\n\tconst blockTypesForToTransforms =\n\t\tgetBlockTypesForPossibleToTransforms( blocks );\n\n\treturn [\n\t\t...new Set( [\n\t\t\t...blockTypesForFromTransforms,\n\t\t\t...blockTypesForToTransforms,\n\t\t] ),\n\t];\n}\n\n/**\n * Given an array of transforms, returns the highest-priority transform where\n * the predicate function returns a truthy value. A higher-priority transform\n * is one with a lower priority value (i.e. first in priority order). Returns\n * null if the transforms set is empty or the predicate function returns a\n * falsey value for all entries.\n *\n * @param {Object[]} transforms Transforms to search.\n * @param {Function} predicate Function returning true on matching transform.\n *\n * @return {?Object} Highest-priority transform candidate.\n */\nexport function findTransform( transforms, predicate ) {\n\t// The hooks library already has built-in mechanisms for managing priority\n\t// queue, so leverage via locally-defined instance.\n\tconst hooks = createHooks();\n\n\tfor ( let i = 0; i < transforms.length; i++ ) {\n\t\tconst candidate = transforms[ i ];\n\t\tif ( predicate( candidate ) ) {\n\t\t\thooks.addFilter(\n\t\t\t\t'transform',\n\t\t\t\t'transform/' + i.toString(),\n\t\t\t\t( result ) => ( result ? result : candidate ),\n\t\t\t\tcandidate.priority\n\t\t\t);\n\t\t}\n\t}\n\n\t// Filter name is arbitrarily chosen but consistent with above aggregation.\n\treturn hooks.applyFilters( 'transform', null );\n}\n\n/**\n * Returns normal block transforms for a given transform direction, optionally\n * for a specific block by name, or an empty array if there are no transforms.\n * If no block name is provided, returns transforms for all blocks. A normal\n * transform object includes `blockName` as a property.\n *\n * @param {string} direction Transform direction (\"to\", \"from\").\n * @param {string|Object} blockTypeOrName Block type or name.\n *\n * @return {Array} Block transforms for direction.\n */\nexport function getBlockTransforms( direction, blockTypeOrName ) {\n\t// When retrieving transforms for all block types, recurse into self.\n\tif ( blockTypeOrName === undefined ) {\n\t\treturn getBlockTypes()\n\t\t\t.map( ( { name } ) => getBlockTransforms( direction, name ) )\n\t\t\t.flat();\n\t}\n\n\t// Validate that block type exists and has array of direction.\n\tconst blockType = normalizeBlockType( blockTypeOrName );\n\tconst { name: blockName, transforms } = blockType || {};\n\tif ( ! transforms || ! Array.isArray( transforms[ direction ] ) ) {\n\t\treturn [];\n\t}\n\n\tconst usingMobileTransformations =\n\t\ttransforms.supportedMobileTransforms &&\n\t\tArray.isArray( transforms.supportedMobileTransforms );\n\tconst filteredTransforms = usingMobileTransformations\n\t\t? transforms[ direction ].filter( ( t ) => {\n\t\t\t\tif ( t.type === 'raw' ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( ! t.blocks || ! t.blocks.length ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( isWildcardBlockTransform( t ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn t.blocks.every( ( transformBlockName ) =>\n\t\t\t\t\ttransforms.supportedMobileTransforms.includes(\n\t\t\t\t\t\ttransformBlockName\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t } )\n\t\t: transforms[ direction ];\n\n\t// Map transforms to normal form.\n\treturn filteredTransforms.map( ( transform ) => ( {\n\t\t...transform,\n\t\tblockName,\n\t\tusingMobileTransformations,\n\t} ) );\n}\n\n/**\n * Checks that a given transforms isMatch method passes for given source blocks.\n *\n * @param {Object} transform A transform object.\n * @param {Array} blocks Blocks array.\n *\n * @return {boolean} True if given blocks are a match for the transform.\n */\nfunction maybeCheckTransformIsMatch( transform, blocks ) {\n\tif ( typeof transform.isMatch !== 'function' ) {\n\t\treturn true;\n\t}\n\tconst sourceBlock = blocks[ 0 ];\n\tconst attributes = transform.isMultiBlock\n\t\t? blocks.map( ( block ) => block.attributes )\n\t\t: sourceBlock.attributes;\n\tconst block = transform.isMultiBlock ? blocks : sourceBlock;\n\n\treturn transform.isMatch( attributes, block );\n}\n\n/**\n * Switch one or more blocks into one or more blocks of the new block type.\n *\n * @param {Array|Object} blocks Blocks array or block object.\n * @param {string} name Block name.\n *\n * @return {?Array} Array of blocks or null.\n */\nexport function switchToBlockType( blocks, name ) {\n\tconst blocksArray = Array.isArray( blocks ) ? blocks : [ blocks ];\n\tconst isMultiBlock = blocksArray.length > 1;\n\tconst firstBlock = blocksArray[ 0 ];\n\tconst sourceName = firstBlock.name;\n\n\t// Find the right transformation by giving priority to the \"to\"\n\t// transformation.\n\tconst transformationsFrom = getBlockTransforms( 'from', name );\n\tconst transformationsTo = getBlockTransforms( 'to', sourceName );\n\n\tconst transformation =\n\t\tfindTransform(\n\t\t\ttransformationsTo,\n\t\t\t( t ) =>\n\t\t\t\tt.type === 'block' &&\n\t\t\t\tt.blocks.indexOf( name ) !== -1 &&\n\t\t\t\t( ! isMultiBlock || t.isMultiBlock ) &&\n\t\t\t\tmaybeCheckTransformIsMatch( t, blocksArray )\n\t\t) ||\n\t\tfindTransform(\n\t\t\ttransformationsFrom,\n\t\t\t( t ) =>\n\t\t\t\tt.type === 'block' &&\n\t\t\t\t( isWildcardBlockTransform( t ) ||\n\t\t\t\t\tt.blocks.indexOf( sourceName ) !== -1 ) &&\n\t\t\t\t( ! isMultiBlock || t.isMultiBlock ) &&\n\t\t\t\tmaybeCheckTransformIsMatch( t, blocksArray )\n\t\t);\n\n\t// Stop if there is no valid transformation.\n\tif ( ! transformation ) {\n\t\treturn null;\n\t}\n\n\tlet transformationResults;\n\n\tif ( transformation.isMultiBlock ) {\n\t\tif ( '__experimentalConvert' in transformation ) {\n\t\t\ttransformationResults =\n\t\t\t\ttransformation.__experimentalConvert( blocksArray );\n\t\t} else {\n\t\t\ttransformationResults = transformation.transform(\n\t\t\t\tblocksArray.map( ( currentBlock ) => currentBlock.attributes ),\n\t\t\t\tblocksArray.map( ( currentBlock ) => currentBlock.innerBlocks )\n\t\t\t);\n\t\t}\n\t} else if ( '__experimentalConvert' in transformation ) {\n\t\ttransformationResults =\n\t\t\ttransformation.__experimentalConvert( firstBlock );\n\t} else {\n\t\ttransformationResults = transformation.transform(\n\t\t\tfirstBlock.attributes,\n\t\t\tfirstBlock.innerBlocks\n\t\t);\n\t}\n\n\t// Ensure that the transformation function returned an object or an array\n\t// of objects.\n\tif (\n\t\ttransformationResults === null ||\n\t\ttypeof transformationResults !== 'object'\n\t) {\n\t\treturn null;\n\t}\n\n\t// If the transformation function returned a single object, we want to work\n\t// with an array instead.\n\ttransformationResults = Array.isArray( transformationResults )\n\t\t? transformationResults\n\t\t: [ transformationResults ];\n\n\t// Ensure that every block object returned by the transformation has a\n\t// valid block type.\n\tif (\n\t\ttransformationResults.some(\n\t\t\t( result ) => ! getBlockType( result.name )\n\t\t)\n\t) {\n\t\treturn null;\n\t}\n\n\t// When unwrapping blocks (`switchToBlockType( wrapperblocks, '*' )`), do\n\t// not run filters on the unwrapped blocks. They shoud remain as they are.\n\tif ( name === '*' ) {\n\t\treturn transformationResults;\n\t}\n\n\tconst hasSwitchedBlock = transformationResults.some(\n\t\t( result ) => result.name === name\n\t);\n\n\t// Ensure that at least one block object returned by the transformation has\n\t// the expected \"destination\" block type.\n\tif ( ! hasSwitchedBlock ) {\n\t\treturn null;\n\t}\n\n\tconst ret = transformationResults.map( ( result, index, results ) => {\n\t\t/**\n\t\t * Filters an individual transform result from block transformation.\n\t\t * All of the original blocks are passed, since transformations are\n\t\t * many-to-many, not one-to-one.\n\t\t *\n\t\t * @param {Object} transformedBlock The transformed block.\n\t\t * @param {Object[]} blocks Original blocks transformed.\n\t\t * @param {Object[]} index Index of the transformed block on the array of results.\n\t\t * @param {Object[]} results An array all the blocks that resulted from the transformation.\n\t\t */\n\t\treturn applyFilters(\n\t\t\t'blocks.switchToBlockType.transformedBlock',\n\t\t\tresult,\n\t\t\tblocks,\n\t\t\tindex,\n\t\t\tresults\n\t\t);\n\t} );\n\n\treturn ret;\n}\n\n/**\n * Create a block object from the example API.\n *\n * @param {string} name\n * @param {Object} example\n *\n * @return {Object} block.\n */\nexport const getBlockFromExample = ( name, example ) => {\n\treturn createBlock(\n\t\tname,\n\t\texample.attributes,\n\t\t( example.innerBlocks ?? [] ).map( ( innerBlock ) =>\n\t\t\tgetBlockFromExample( innerBlock.name, innerBlock )\n\t\t)\n\t);\n};\n","/**\n * External dependencies\n */\nimport { every, reduce } from 'lodash';\nimport { colord, extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\nimport a11yPlugin from 'colord/plugins/a11y';\n\n/**\n * WordPress dependencies\n */\nimport { Component, isValidElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { BLOCK_ICON_DEFAULT } from './constants';\nimport { getBlockType, getDefaultBlockName } from './registration';\nimport { createBlock } from './factory';\n\nextend( [ namesPlugin, a11yPlugin ] );\n\n/**\n * Array of icon colors containing a color to be used if the icon color\n * was not explicitly set but the icon background color was.\n *\n * @type {Object}\n */\nconst ICON_COLORS = [ '#191e23', '#f8f9f9' ];\n\n/**\n * Determines whether the block is a default block\n * and its attributes are equal to the default attributes\n * which means the block is unmodified.\n *\n * @param {WPBlock} block Block Object\n *\n * @return {boolean} Whether the block is an unmodified default block\n */\nexport function isUnmodifiedDefaultBlock( block ) {\n\tconst defaultBlockName = getDefaultBlockName();\n\tif ( block.name !== defaultBlockName ) {\n\t\treturn false;\n\t}\n\n\t// Cache a created default block if no cache exists or the default block\n\t// name changed.\n\tif (\n\t\t! isUnmodifiedDefaultBlock.block ||\n\t\tisUnmodifiedDefaultBlock.block.name !== defaultBlockName\n\t) {\n\t\tisUnmodifiedDefaultBlock.block = createBlock( defaultBlockName );\n\t}\n\n\tconst newDefaultBlock = isUnmodifiedDefaultBlock.block;\n\tconst blockType = getBlockType( defaultBlockName );\n\n\treturn every(\n\t\tblockType?.attributes,\n\t\t( value, key ) =>\n\t\t\tnewDefaultBlock.attributes[ key ] === block.attributes[ key ]\n\t);\n}\n\n/**\n * Function that checks if the parameter is a valid icon.\n *\n * @param {*} icon Parameter to be checked.\n *\n * @return {boolean} True if the parameter is a valid icon and false otherwise.\n */\n\nexport function isValidIcon( icon ) {\n\treturn (\n\t\t!! icon &&\n\t\t( typeof icon === 'string' ||\n\t\t\tisValidElement( icon ) ||\n\t\t\ttypeof icon === 'function' ||\n\t\t\ticon instanceof Component )\n\t);\n}\n\n/**\n * Function that receives an icon as set by the blocks during the registration\n * and returns a new icon object that is normalized so we can rely on just on possible icon structure\n * in the codebase.\n *\n * @param {WPBlockTypeIconRender} icon Render behavior of a block type icon;\n * one of a Dashicon slug, an element, or a\n * component.\n *\n * @return {WPBlockTypeIconDescriptor} Object describing the icon.\n */\nexport function normalizeIconObject( icon ) {\n\ticon = icon || BLOCK_ICON_DEFAULT;\n\tif ( isValidIcon( icon ) ) {\n\t\treturn { src: icon };\n\t}\n\n\tif ( 'background' in icon ) {\n\t\tconst colordBgColor = colord( icon.background );\n\t\tconst getColorContrast = ( iconColor ) =>\n\t\t\tcolordBgColor.contrast( iconColor );\n\t\tconst maxContrast = Math.max( ...ICON_COLORS.map( getColorContrast ) );\n\n\t\treturn {\n\t\t\t...icon,\n\t\t\tforeground: icon.foreground\n\t\t\t\t? icon.foreground\n\t\t\t\t: ICON_COLORS.find(\n\t\t\t\t\t\t( iconColor ) =>\n\t\t\t\t\t\t\tgetColorContrast( iconColor ) === maxContrast\n\t\t\t\t ),\n\t\t\tshadowColor: colordBgColor.alpha( 0.3 ).toRgbString(),\n\t\t};\n\t}\n\n\treturn icon;\n}\n\n/**\n * Normalizes block type passed as param. When string is passed then\n * it converts it to the matching block type object.\n * It passes the original object otherwise.\n *\n * @param {string|Object} blockTypeOrName Block type or name.\n *\n * @return {?Object} Block type.\n */\nexport function normalizeBlockType( blockTypeOrName ) {\n\tif ( typeof blockTypeOrName === 'string' ) {\n\t\treturn getBlockType( blockTypeOrName );\n\t}\n\n\treturn blockTypeOrName;\n}\n\n/**\n * Get the label for the block, usually this is either the block title,\n * or the value of the block's `label` function when that's specified.\n *\n * @param {Object} blockType The block type.\n * @param {Object} attributes The values of the block's attributes.\n * @param {Object} context The intended use for the label.\n *\n * @return {string} The block label.\n */\nexport function getBlockLabel( blockType, attributes, context = 'visual' ) {\n\tconst { __experimentalLabel: getLabel, title } = blockType;\n\n\tconst label = getLabel && getLabel( attributes, { context } );\n\n\tif ( ! label ) {\n\t\treturn title;\n\t}\n\n\t// Strip any HTML (i.e. RichText formatting) before returning.\n\treturn stripHTML( label );\n}\n\n/**\n * Get a label for the block for use by screenreaders, this is more descriptive\n * than the visual label and includes the block title and the value of the\n * `getLabel` function if it's specified.\n *\n * @param {?Object} blockType The block type.\n * @param {Object} attributes The values of the block's attributes.\n * @param {?number} position The position of the block in the block list.\n * @param {string} [direction='vertical'] The direction of the block layout.\n *\n * @return {string} The block label.\n */\nexport function getAccessibleBlockLabel(\n\tblockType,\n\tattributes,\n\tposition,\n\tdirection = 'vertical'\n) {\n\t// `title` is already localized, `label` is a user-supplied value.\n\tconst title = blockType?.title;\n\tconst label = blockType\n\t\t? getBlockLabel( blockType, attributes, 'accessibility' )\n\t\t: '';\n\tconst hasPosition = position !== undefined;\n\n\t// getBlockLabel returns the block title as a fallback when there's no label,\n\t// if it did return the title, this function needs to avoid adding the\n\t// title twice within the accessible label. Use this `hasLabel` boolean to\n\t// handle that.\n\tconst hasLabel = label && label !== title;\n\n\tif ( hasPosition && direction === 'vertical' ) {\n\t\tif ( hasLabel ) {\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: accessibility text. 1: The block title. 2: The block row number. 3: The block label.. */\n\t\t\t\t__( '%1$s Block. Row %2$d. %3$s' ),\n\t\t\t\ttitle,\n\t\t\t\tposition,\n\t\t\t\tlabel\n\t\t\t);\n\t\t}\n\n\t\treturn sprintf(\n\t\t\t/* translators: accessibility text. 1: The block title. 2: The block row number. */\n\t\t\t__( '%1$s Block. Row %2$d' ),\n\t\t\ttitle,\n\t\t\tposition\n\t\t);\n\t} else if ( hasPosition && direction === 'horizontal' ) {\n\t\tif ( hasLabel ) {\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: accessibility text. 1: The block title. 2: The block column number. 3: The block label.. */\n\t\t\t\t__( '%1$s Block. Column %2$d. %3$s' ),\n\t\t\t\ttitle,\n\t\t\t\tposition,\n\t\t\t\tlabel\n\t\t\t);\n\t\t}\n\n\t\treturn sprintf(\n\t\t\t/* translators: accessibility text. 1: The block title. 2: The block column number. */\n\t\t\t__( '%1$s Block. Column %2$d' ),\n\t\t\ttitle,\n\t\t\tposition\n\t\t);\n\t}\n\n\tif ( hasLabel ) {\n\t\treturn sprintf(\n\t\t\t/* translators: accessibility text. %1: The block title. %2: The block label. */\n\t\t\t__( '%1$s Block. %2$s' ),\n\t\t\ttitle,\n\t\t\tlabel\n\t\t);\n\t}\n\n\treturn sprintf(\n\t\t/* translators: accessibility text. %s: The block title. */\n\t\t__( '%s Block' ),\n\t\ttitle\n\t);\n}\n\n/**\n * Ensure attributes contains only values defined by block type, and merge\n * default values for missing attributes.\n *\n * @param {string} name The block's name.\n * @param {Object} attributes The block's attributes.\n * @return {Object} The sanitized attributes.\n */\nexport function __experimentalSanitizeBlockAttributes( name, attributes ) {\n\t// Get the type definition associated with a registered block.\n\tconst blockType = getBlockType( name );\n\n\tif ( undefined === blockType ) {\n\t\tthrow new Error( `Block type '${ name }' is not registered.` );\n\t}\n\n\treturn reduce(\n\t\tblockType.attributes,\n\t\t( accumulator, schema, key ) => {\n\t\t\tconst value = attributes[ key ];\n\n\t\t\tif ( undefined !== value ) {\n\t\t\t\taccumulator[ key ] = value;\n\t\t\t} else if ( schema.hasOwnProperty( 'default' ) ) {\n\t\t\t\taccumulator[ key ] = schema.default;\n\t\t\t}\n\n\t\t\tif ( [ 'node', 'children' ].indexOf( schema.source ) !== -1 ) {\n\t\t\t\t// Ensure value passed is always an array, which we're expecting in\n\t\t\t\t// the RichText component to handle the deprecated value.\n\t\t\t\tif ( typeof accumulator[ key ] === 'string' ) {\n\t\t\t\t\taccumulator[ key ] = [ accumulator[ key ] ];\n\t\t\t\t} else if ( ! Array.isArray( accumulator[ key ] ) ) {\n\t\t\t\t\taccumulator[ key ] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n}\n\n/**\n * Filter block attributes by `role` and return their names.\n *\n * @param {string} name Block attribute's name.\n * @param {string} role The role of a block attribute.\n *\n * @return {string[]} The attribute names that have the provided role.\n */\nexport function __experimentalGetBlockAttributesNamesByRole( name, role ) {\n\tconst attributes = getBlockType( name )?.attributes;\n\tif ( ! attributes ) return [];\n\tconst attributesNames = Object.keys( attributes );\n\tif ( ! role ) return attributesNames;\n\treturn attributesNames.filter(\n\t\t( attributeName ) =>\n\t\t\tattributes[ attributeName ]?.__experimentalRole === role\n\t);\n}\n\n/**\n * Return a new object with the specified keys omitted.\n *\n * @param {Object} object Original object.\n * @param {Array} keys Keys to be omitted.\n *\n * @return {Object} Object with omitted keys.\n */\nexport function omit( object, keys ) {\n\treturn Object.fromEntries(\n\t\tObject.entries( object ).filter( ( [ key ] ) => ! keys.includes( key ) )\n\t);\n}\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u<t&&(t=u,b=g)}return b}};f.string.push([function(f){var r=f.toLowerCase(),d=\"transparent\"===r?\"#0000\":a[r];return d?new e(d).toRgb():null},\"name\"])}\n","/**\n * External dependencies\n */\nimport { filter, find, get, isEmpty, map, mapValues } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { omit } from '../api/utils';\n\n/**\n * @typedef {Object} WPBlockCategory\n *\n * @property {string} slug Unique category slug.\n * @property {string} title Category label, for display in user interface.\n */\n\n/**\n * Default set of categories.\n *\n * @type {WPBlockCategory[]}\n */\nexport const DEFAULT_CATEGORIES = [\n\t{ slug: 'text', title: __( 'Text' ) },\n\t{ slug: 'media', title: __( 'Media' ) },\n\t{ slug: 'design', title: __( 'Design' ) },\n\t{ slug: 'widgets', title: __( 'Widgets' ) },\n\t{ slug: 'theme', title: __( 'Theme' ) },\n\t{ slug: 'embed', title: __( 'Embeds' ) },\n\t{ slug: 'reusable', title: __( 'Reusable blocks' ) },\n];\n\n// Key block types by their name.\nfunction keyBlockTypesByName( types ) {\n\treturn types.reduce(\n\t\t( newBlockTypes, block ) => ( {\n\t\t\t...newBlockTypes,\n\t\t\t[ block.name ]: block,\n\t\t} ),\n\t\t{}\n\t);\n}\n\n// Filter items to ensure they're unique by their name.\nfunction getUniqueItemsByName( items ) {\n\treturn items.reduce( ( acc, currentItem ) => {\n\t\tif ( ! acc.some( ( item ) => item.name === currentItem.name ) ) {\n\t\t\tacc.push( currentItem );\n\t\t}\n\t\treturn acc;\n\t}, [] );\n}\n\n/**\n * Reducer managing the unprocessed block types in a form passed when registering the by block.\n * It's for internal use only. It allows recomputing the processed block types on-demand after block type filters\n * get added or removed.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function unprocessedBlockTypes( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_UNPROCESSED_BLOCK_TYPE':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockType.name ]: action.blockType,\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\treturn omit( state, action.names );\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the processed block types with all filters applied.\n * The state is derived from the `unprocessedBlockTypes` reducer.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function blockTypes( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_TYPES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...keyBlockTypesByName( action.blockTypes ),\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\treturn omit( state, action.names );\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the block style variations.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function blockStyles( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_TYPES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...mapValues(\n\t\t\t\t\tkeyBlockTypesByName( action.blockTypes ),\n\t\t\t\t\t( blockType ) =>\n\t\t\t\t\t\tgetUniqueItemsByName( [\n\t\t\t\t\t\t\t...get( blockType, [ 'styles' ], [] ).map(\n\t\t\t\t\t\t\t\t( style ) => ( {\n\t\t\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t\t\t\tsource: 'block',\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...get( state, [ blockType.name ], [] ).filter(\n\t\t\t\t\t\t\t\t( { source } ) => 'block' !== source\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t] )\n\t\t\t\t),\n\t\t\t};\n\t\tcase 'ADD_BLOCK_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: getUniqueItemsByName( [\n\t\t\t\t\t...get( state, [ action.blockName ], [] ),\n\t\t\t\t\t...action.styles,\n\t\t\t\t] ),\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_STYLES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: filter(\n\t\t\t\t\tget( state, [ action.blockName ], [] ),\n\t\t\t\t\t( style ) => action.styleNames.indexOf( style.name ) === -1\n\t\t\t\t),\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer managing the block variations.\n *\n * @param {Object} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function blockVariations( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_TYPES':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...mapValues(\n\t\t\t\t\tkeyBlockTypesByName( action.blockTypes ),\n\t\t\t\t\t( blockType ) => {\n\t\t\t\t\t\treturn getUniqueItemsByName( [\n\t\t\t\t\t\t\t...get( blockType, [ 'variations' ], [] ).map(\n\t\t\t\t\t\t\t\t( variation ) => ( {\n\t\t\t\t\t\t\t\t\t...variation,\n\t\t\t\t\t\t\t\t\tsource: 'block',\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...get( state, [ blockType.name ], [] ).filter(\n\t\t\t\t\t\t\t\t( { source } ) => 'block' !== source\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\tcase 'ADD_BLOCK_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: getUniqueItemsByName( [\n\t\t\t\t\t...get( state, [ action.blockName ], [] ),\n\t\t\t\t\t...action.variations,\n\t\t\t\t] ),\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_VARIATIONS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.blockName ]: filter(\n\t\t\t\t\tget( state, [ action.blockName ], [] ),\n\t\t\t\t\t( variation ) =>\n\t\t\t\t\t\taction.variationNames.indexOf( variation.name ) === -1\n\t\t\t\t),\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Higher-order Reducer creating a reducer keeping track of given block name.\n *\n * @param {string} setActionType Action type.\n *\n * @return {Function} Reducer.\n */\nexport function createBlockNameSetterReducer( setActionType ) {\n\treturn ( state = null, action ) => {\n\t\tswitch ( action.type ) {\n\t\t\tcase 'REMOVE_BLOCK_TYPES':\n\t\t\t\tif ( action.names.indexOf( state ) !== -1 ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn state;\n\n\t\t\tcase setActionType:\n\t\t\t\treturn action.name || null;\n\t\t}\n\n\t\treturn state;\n\t};\n}\n\nexport const defaultBlockName = createBlockNameSetterReducer(\n\t'SET_DEFAULT_BLOCK_NAME'\n);\nexport const freeformFallbackBlockName = createBlockNameSetterReducer(\n\t'SET_FREEFORM_FALLBACK_BLOCK_NAME'\n);\nexport const unregisteredFallbackBlockName = createBlockNameSetterReducer(\n\t'SET_UNREGISTERED_FALLBACK_BLOCK_NAME'\n);\nexport const groupingBlockName = createBlockNameSetterReducer(\n\t'SET_GROUPING_BLOCK_NAME'\n);\n\n/**\n * Reducer managing the categories\n *\n * @param {WPBlockCategory[]} state Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {WPBlockCategory[]} Updated state.\n */\nexport function categories( state = DEFAULT_CATEGORIES, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_CATEGORIES':\n\t\t\treturn action.categories || [];\n\t\tcase 'UPDATE_CATEGORY': {\n\t\t\tif ( ! action.category || isEmpty( action.category ) ) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\tconst categoryToChange = find( state, [ 'slug', action.slug ] );\n\t\t\tif ( categoryToChange ) {\n\t\t\t\treturn map( state, ( category ) => {\n\t\t\t\t\tif ( category.slug === action.slug ) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...category,\n\t\t\t\t\t\t\t...action.category,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn category;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\treturn state;\n}\n\nexport function collections( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'ADD_BLOCK_COLLECTION':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t[ action.namespace ]: {\n\t\t\t\t\ttitle: action.title,\n\t\t\t\t\ticon: action.icon,\n\t\t\t\t},\n\t\t\t};\n\t\tcase 'REMOVE_BLOCK_COLLECTION':\n\t\t\treturn omit( state, action.namespace );\n\t}\n\treturn state;\n}\n\nexport default combineReducers( {\n\tunprocessedBlockTypes,\n\tblockTypes,\n\tblockStyles,\n\tblockVariations,\n\tdefaultBlockName,\n\tfreeformFallbackBlockName,\n\tunregisteredFallbackBlockName,\n\tgroupingBlockName,\n\tcategories,\n\tcollections,\n} );\n","'use strict';\n\n/** @typedef {(...args: any[]) => *[]} GetDependants */\n\n/** @typedef {() => void} Clear */\n\n/**\n * @typedef {{\n * getDependants: GetDependants,\n * clear: Clear\n * }} EnhancedSelector\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef CacheNode\n *\n * @property {?CacheNode|undefined} [prev] Previous node.\n * @property {?CacheNode|undefined} [next] Next node.\n * @property {*[]} args Function arguments for cache entry.\n * @property {*} val Function result.\n */\n\n/**\n * @typedef Cache\n *\n * @property {Clear} clear Function to clear cache.\n * @property {boolean} [isUniqueByDependants] Whether dependants are valid in\n * considering cache uniqueness. A cache is unique if dependents are all arrays\n * or objects.\n * @property {CacheNode?} [head] Cache head.\n * @property {*[]} [lastDependants] Dependants from previous invocation.\n */\n\n/**\n * Arbitrary value used as key for referencing cache object in WeakMap tree.\n *\n * @type {{}}\n */\nvar LEAF_KEY = {};\n\n/**\n * Returns the first argument as the sole entry in an array.\n *\n * @template T\n *\n * @param {T} value Value to return.\n *\n * @return {[T]} Value returned as entry in array.\n */\nfunction arrayOf(value) {\n\treturn [value];\n}\n\n/**\n * Returns true if the value passed is object-like, or false otherwise. A value\n * is object-like if it can support property assignment, e.g. object or array.\n *\n * @param {*} value Value to test.\n *\n * @return {boolean} Whether value is object-like.\n */\nfunction isObjectLike(value) {\n\treturn !!value && 'object' === typeof value;\n}\n\n/**\n * Creates and returns a new cache object.\n *\n * @return {Cache} Cache object.\n */\nfunction createCache() {\n\t/** @type {Cache} */\n\tvar cache = {\n\t\tclear: function () {\n\t\t\tcache.head = null;\n\t\t},\n\t};\n\n\treturn cache;\n}\n\n/**\n * Returns true if entries within the two arrays are strictly equal by\n * reference from a starting index.\n *\n * @param {*[]} a First array.\n * @param {*[]} b Second array.\n * @param {number} fromIndex Index from which to start comparison.\n *\n * @return {boolean} Whether arrays are shallowly equal.\n */\nfunction isShallowEqual(a, b, fromIndex) {\n\tvar i;\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\tfor (i = fromIndex; i < a.length; i++) {\n\t\tif (a[i] !== b[i]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Returns a memoized selector function. The getDependants function argument is\n * called before the memoized selector and is expected to return an immutable\n * reference or array of references on which the selector depends for computing\n * its own return value. The memoize cache is preserved only as long as those\n * dependant references remain the same. If getDependants returns a different\n * reference(s), the cache is cleared and the selector value regenerated.\n *\n * @template {(...args: *[]) => *} S\n *\n * @param {S} selector Selector function.\n * @param {GetDependants=} getDependants Dependant getter returning an array of\n * references used in cache bust consideration.\n */\nexport default function (selector, getDependants) {\n\t/** @type {WeakMap<*,*>} */\n\tvar rootCache;\n\n\t/** @type {GetDependants} */\n\tvar normalizedGetDependants = getDependants ? getDependants : arrayOf;\n\n\t/**\n\t * Returns the cache for a given dependants array. When possible, a WeakMap\n\t * will be used to create a unique cache for each set of dependants. This\n\t * is feasible due to the nature of WeakMap in allowing garbage collection\n\t * to occur on entries where the key object is no longer referenced. Since\n\t * WeakMap requires the key to be an object, this is only possible when the\n\t * dependant is object-like. The root cache is created as a hierarchy where\n\t * each top-level key is the first entry in a dependants set, the value a\n\t * WeakMap where each key is the next dependant, and so on. This continues\n\t * so long as the dependants are object-like. If no dependants are object-\n\t * like, then the cache is shared across all invocations.\n\t *\n\t * @see isObjectLike\n\t *\n\t * @param {*[]} dependants Selector dependants.\n\t *\n\t * @return {Cache} Cache object.\n\t */\n\tfunction getCache(dependants) {\n\t\tvar caches = rootCache,\n\t\t\tisUniqueByDependants = true,\n\t\t\ti,\n\t\t\tdependant,\n\t\t\tmap,\n\t\t\tcache;\n\n\t\tfor (i = 0; i < dependants.length; i++) {\n\t\t\tdependant = dependants[i];\n\n\t\t\t// Can only compose WeakMap from object-like key.\n\t\t\tif (!isObjectLike(dependant)) {\n\t\t\t\tisUniqueByDependants = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Does current segment of cache already have a WeakMap?\n\t\t\tif (caches.has(dependant)) {\n\t\t\t\t// Traverse into nested WeakMap.\n\t\t\t\tcaches = caches.get(dependant);\n\t\t\t} else {\n\t\t\t\t// Create, set, and traverse into a new one.\n\t\t\t\tmap = new WeakMap();\n\t\t\t\tcaches.set(dependant, map);\n\t\t\t\tcaches = map;\n\t\t\t}\n\t\t}\n\n\t\t// We use an arbitrary (but consistent) object as key for the last item\n\t\t// in the WeakMap to serve as our running cache.\n\t\tif (!caches.has(LEAF_KEY)) {\n\t\t\tcache = createCache();\n\t\t\tcache.isUniqueByDependants = isUniqueByDependants;\n\t\t\tcaches.set(LEAF_KEY, cache);\n\t\t}\n\n\t\treturn caches.get(LEAF_KEY);\n\t}\n\n\t/**\n\t * Resets root memoization cache.\n\t */\n\tfunction clear() {\n\t\trootCache = new WeakMap();\n\t}\n\n\t/* eslint-disable jsdoc/check-param-names */\n\t/**\n\t * The augmented selector call, considering first whether dependants have\n\t * changed before passing it to underlying memoize function.\n\t *\n\t * @param {*} source Source object for derivation.\n\t * @param {...*} extraArgs Additional arguments to pass to selector.\n\t *\n\t * @return {*} Selector result.\n\t */\n\t/* eslint-enable jsdoc/check-param-names */\n\tfunction callSelector(/* source, ...extraArgs */) {\n\t\tvar len = arguments.length,\n\t\t\tcache,\n\t\t\tnode,\n\t\t\ti,\n\t\t\targs,\n\t\t\tdependants;\n\n\t\t// Create copy of arguments (avoid leaking deoptimization).\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tdependants = normalizedGetDependants.apply(null, args);\n\t\tcache = getCache(dependants);\n\n\t\t// If not guaranteed uniqueness by dependants (primitive type), shallow\n\t\t// compare against last dependants and, if references have changed,\n\t\t// destroy cache to recalculate result.\n\t\tif (!cache.isUniqueByDependants) {\n\t\t\tif (\n\t\t\t\tcache.lastDependants &&\n\t\t\t\t!isShallowEqual(dependants, cache.lastDependants, 0)\n\t\t\t) {\n\t\t\t\tcache.clear();\n\t\t\t}\n\n\t\t\tcache.lastDependants = dependants;\n\t\t}\n\n\t\tnode = cache.head;\n\t\twhile (node) {\n\t\t\t// Check whether node arguments match arguments\n\t\t\tif (!isShallowEqual(node.args, args, 1)) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== cache.head) {\n\t\t\t\t// Adjust siblings to point to each other.\n\t\t\t\t/** @type {CacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = cache.head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {CacheNode} */ (cache.head).prev = node;\n\t\t\t\tcache.head = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\tnode = /** @type {CacheNode} */ ({\n\t\t\t// Generate the result from original function\n\t\t\tval: selector.apply(null, args),\n\t\t});\n\n\t\t// Avoid including the source object in the cache.\n\t\targs[0] = null;\n\t\tnode.args = args;\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (cache.head) {\n\t\t\tcache.head.prev = node;\n\t\t\tnode.next = cache.head;\n\t\t}\n\n\t\tcache.head = node;\n\n\t\treturn node.val;\n\t}\n\n\tcallSelector.getDependants = normalizedGetDependants;\n\tcallSelector.clear = clear;\n\tclear();\n\n\treturn /** @type {S & EnhancedSelector} */ (callSelector);\n}\n","/**\n * External dependencies\n */\nimport createSelector from 'rememo';\nimport removeAccents from 'remove-accents';\nimport { filter, flow, get, includes, map, some } from 'lodash';\n\n/** @typedef {import('../api/registration').WPBlockVariation} WPBlockVariation */\n/** @typedef {import('../api/registration').WPBlockVariationScope} WPBlockVariationScope */\n/** @typedef {import('./reducer').WPBlockCategory} WPBlockCategory */\n\n/**\n * Given a block name or block type object, returns the corresponding\n * normalized block type object.\n *\n * @param {Object} state Blocks state.\n * @param {(string|Object)} nameOrType Block name or type object\n *\n * @return {Object} Block type object.\n */\nconst getNormalizedBlockType = ( state, nameOrType ) =>\n\t'string' === typeof nameOrType\n\t\t? getBlockType( state, nameOrType )\n\t\t: nameOrType;\n\n/**\n * Returns all the unprocessed block types as passed during the registration.\n *\n * @param {Object} state Data state.\n *\n * @return {Array} Unprocessed block types.\n */\nexport function __experimentalGetUnprocessedBlockTypes( state ) {\n\treturn state.unprocessedBlockTypes;\n}\n\n/**\n * Returns all the available block types.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const blockTypes = useSelect(\n * ( select ) => select( blocksStore ).getBlockTypes(),\n * []\n * );\n *\n * return (\n * <ul>\n * { blockTypes.map( ( block ) => (\n * <li key={ block.name }>{ block.title }</li>\n * ) ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {Array} Block Types.\n */\nexport const getBlockTypes = createSelector(\n\t( state ) => Object.values( state.blockTypes ),\n\t( state ) => [ state.blockTypes ]\n);\n\n/**\n * Returns a block type by name.\n *\n * @param {Object} state Data state.\n * @param {string} name Block type name.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const paragraphBlock = useSelect( ( select ) =>\n * ( select ) => select( blocksStore ).getBlockType( 'core/paragraph' ),\n * []\n * );\n *\n * return (\n * <ul>\n * { paragraphBlock &&\n * Object.entries( paragraphBlock.supports ).map(\n * ( blockSupportsEntry ) => {\n * const [ propertyName, value ] = blockSupportsEntry;\n * return (\n * <li\n * key={ propertyName }\n * >{ `${ propertyName } : ${ value }` }</li>\n * );\n * }\n * ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {Object?} Block Type.\n */\nexport function getBlockType( state, name ) {\n\treturn state.blockTypes[ name ];\n}\n\n/**\n * Returns block styles by block name.\n *\n * @param {Object} state Data state.\n * @param {string} name Block type name.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const buttonBlockStyles = useSelect( ( select ) =>\n * select( blocksStore ).getBlockStyles( 'core/button' ),\n * []\n * );\n *\n * return (\n * <ul>\n * { buttonBlockStyles &&\n * buttonBlockStyles.map( ( style ) => (\n * <li key={ style.name }>{ style.label }</li>\n * ) ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {Array?} Block Styles.\n */\nexport function getBlockStyles( state, name ) {\n\treturn state.blockStyles[ name ];\n}\n\n/**\n * Returns block variations by block name.\n *\n * @param {Object} state Data state.\n * @param {string} blockName Block type name.\n * @param {WPBlockVariationScope} [scope] Block variation scope name.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const socialLinkVariations = useSelect( ( select ) =>\n * select( blocksStore ).getBlockVariations( 'core/social-link' ),\n * []\n * );\n *\n * return (\n * <ul>\n * { socialLinkVariations &&\n * socialLinkVariations.map( ( variation ) => (\n * <li key={ variation.name }>{ variation.title }</li>\n * ) ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {(WPBlockVariation[]|void)} Block variations.\n */\nexport const getBlockVariations = createSelector(\n\t( state, blockName, scope ) => {\n\t\tconst variations = state.blockVariations[ blockName ];\n\t\tif ( ! variations || ! scope ) {\n\t\t\treturn variations;\n\t\t}\n\t\treturn variations.filter( ( variation ) => {\n\t\t\t// For backward compatibility reasons, variation's scope defaults to\n\t\t\t// `block` and `inserter` when not set.\n\t\t\treturn ( variation.scope || [ 'block', 'inserter' ] ).includes(\n\t\t\t\tscope\n\t\t\t);\n\t\t} );\n\t},\n\t( state, blockName ) => [ state.blockVariations[ blockName ] ]\n);\n\n/**\n * Returns the active block variation for a given block based on its attributes.\n * Variations are determined by their `isActive` property.\n * Which is either an array of block attribute keys or a function.\n *\n * In case of an array of block attribute keys, the `attributes` are compared\n * to the variation's attributes using strict equality check.\n *\n * In case of function type, the function should accept a block's attributes\n * and the variation's attributes and determines if a variation is active.\n * A function that accepts a block's attributes and the variation's attributes and determines if a variation is active.\n *\n * @param {Object} state Data state.\n * @param {string} blockName Name of block (example: “core/columns”).\n * @param {Object} attributes Block attributes used to determine active variation.\n * @param {WPBlockVariationScope} [scope] Block variation scope name.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { store as blockEditorStore } from '@wordpress/block-editor';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * // This example assumes that a core/embed block is the first block in the Block Editor.\n * const activeBlockVariation = useSelect( ( select ) => {\n * // Retrieve the list of blocks.\n * const [ firstBlock ] = select( blockEditorStore ).getBlocks()\n *\n * // Return the active block variation for the first block.\n * return select( blocksStore ).getActiveBlockVariation(\n * firstBlock.name,\n * firstBlock.attributes\n * );\n * }, [] );\n *\n * return activeBlockVariation && activeBlockVariation.name === 'spotify' ? (\n * <p>{ __( 'Spotify variation' ) }</p>\n * ) : (\n * <p>{ __( 'Other variation' ) }</p>\n * );\n * };\n * ```\n *\n * @return {(WPBlockVariation|undefined)} Active block variation.\n */\nexport function getActiveBlockVariation( state, blockName, attributes, scope ) {\n\tconst variations = getBlockVariations( state, blockName, scope );\n\n\tconst match = variations?.find( ( variation ) => {\n\t\tif ( Array.isArray( variation.isActive ) ) {\n\t\t\tconst blockType = getBlockType( state, blockName );\n\t\t\tconst attributeKeys = Object.keys( blockType?.attributes || {} );\n\t\t\tconst definedAttributes = variation.isActive.filter(\n\t\t\t\t( attribute ) => attributeKeys.includes( attribute )\n\t\t\t);\n\t\t\tif ( definedAttributes.length === 0 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn definedAttributes.every(\n\t\t\t\t( attribute ) =>\n\t\t\t\t\tattributes[ attribute ] ===\n\t\t\t\t\tvariation.attributes[ attribute ]\n\t\t\t);\n\t\t}\n\n\t\treturn variation.isActive?.( attributes, variation.attributes );\n\t} );\n\n\treturn match;\n}\n\n/**\n * Returns the default block variation for the given block type.\n * When there are multiple variations annotated as the default one,\n * the last added item is picked. This simplifies registering overrides.\n * When there is no default variation set, it returns the first item.\n *\n * @param {Object} state Data state.\n * @param {string} blockName Block type name.\n * @param {WPBlockVariationScope} [scope] Block variation scope name.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const defaultEmbedBlockVariation = useSelect( ( select ) =>\n * select( blocksStore ).getDefaultBlockVariation( 'core/embed' ),\n * []\n * );\n *\n * return (\n * defaultEmbedBlockVariation && (\n * <p>\n * { sprintf(\n * __( 'core/embed default variation: %s' ),\n * defaultEmbedBlockVariation.title\n * ) }\n * </p>\n * )\n * );\n * };\n * ```\n *\n * @return {?WPBlockVariation} The default block variation.\n */\nexport function getDefaultBlockVariation( state, blockName, scope ) {\n\tconst variations = getBlockVariations( state, blockName, scope );\n\n\tconst defaultVariation = [ ...variations ]\n\t\t.reverse()\n\t\t.find( ( { isDefault } ) => !! isDefault );\n\n\treturn defaultVariation || variations[ 0 ];\n}\n\n/**\n * Returns all the available block categories.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect, } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const blockCategories = useSelect( ( select ) =>\n * select( blocksStore ).getCategories(),\n * []\n * );\n *\n * return (\n * <ul>\n * { blockCategories.map( ( category ) => (\n * <li key={ category.slug }>{ category.title }</li>\n * ) ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {WPBlockCategory[]} Categories list.\n */\nexport function getCategories( state ) {\n\treturn state.categories;\n}\n\n/**\n * Returns all the available collections.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const blockCollections = useSelect( ( select ) =>\n * select( blocksStore ).getCollections(),\n * []\n * );\n *\n * return (\n * <ul>\n * { Object.values( blockCollections ).length > 0 &&\n * Object.values( blockCollections ).map( ( collection ) => (\n * <li key={ collection.title }>{ collection.title }</li>\n * ) ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {Object} Collections list.\n */\nexport function getCollections( state ) {\n\treturn state.collections;\n}\n\n/**\n * Returns the name of the default block name.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const defaultBlockName = useSelect( ( select ) =>\n * select( blocksStore ).getDefaultBlockName(),\n * []\n * );\n *\n * return (\n * defaultBlockName && (\n * <p>\n * { sprintf( __( 'Default block name: %s' ), defaultBlockName ) }\n * </p>\n * )\n * );\n * };\n * ```\n *\n * @return {string?} Default block name.\n */\nexport function getDefaultBlockName( state ) {\n\treturn state.defaultBlockName;\n}\n\n/**\n * Returns the name of the block for handling non-block content.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const freeformFallbackBlockName = useSelect( ( select ) =>\n * select( blocksStore ).getFreeformFallbackBlockName(),\n * []\n * );\n *\n * return (\n * freeformFallbackBlockName && (\n * <p>\n * { sprintf( __(\n * 'Freeform fallback block name: %s' ),\n * freeformFallbackBlockName\n * ) }\n * </p>\n * )\n * );\n * };\n * ```\n *\n * @return {string?} Name of the block for handling non-block content.\n */\nexport function getFreeformFallbackBlockName( state ) {\n\treturn state.freeformFallbackBlockName;\n}\n\n/**\n * Returns the name of the block for handling unregistered blocks.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const unregisteredFallbackBlockName = useSelect( ( select ) =>\n * select( blocksStore ).getUnregisteredFallbackBlockName(),\n * []\n * );\n *\n * return (\n * unregisteredFallbackBlockName && (\n * <p>\n * { sprintf( __(\n * 'Unregistered fallback block name: %s' ),\n * unregisteredFallbackBlockName\n * ) }\n * </p>\n * )\n * );\n * };\n * ```\n *\n * @return {string?} Name of the block for handling unregistered blocks.\n */\nexport function getUnregisteredFallbackBlockName( state ) {\n\treturn state.unregisteredFallbackBlockName;\n}\n\n/**\n * Returns the name of the block for handling the grouping of blocks.\n *\n * @param {Object} state Data state.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const groupingBlockName = useSelect( ( select ) =>\n * select( blocksStore ).getGroupingBlockName(),\n * []\n * );\n *\n * return (\n * groupingBlockName && (\n * <p>\n * { sprintf(\n * __( 'Default grouping block name: %s' ),\n * groupingBlockName\n * ) }\n * </p>\n * )\n * );\n * };\n * ```\n *\n * @return {string?} Name of the block for handling the grouping of blocks.\n */\nexport function getGroupingBlockName( state ) {\n\treturn state.groupingBlockName;\n}\n\n/**\n * Returns an array with the child blocks of a given block.\n *\n * @param {Object} state Data state.\n * @param {string} blockName Block type name.\n *\n * @example\n * ```js\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const childBlockNames = useSelect( ( select ) =>\n * select( blocksStore ).getChildBlockNames( 'core/navigation' ),\n * []\n * );\n *\n * return (\n * <ul>\n * { childBlockNames &&\n * childBlockNames.map( ( child ) => (\n * <li key={ child }>{ child }</li>\n * ) ) }\n * </ul>\n * );\n * };\n * ```\n *\n * @return {Array} Array of child block names.\n */\nexport const getChildBlockNames = createSelector(\n\t( state, blockName ) => {\n\t\treturn map(\n\t\t\tfilter( state.blockTypes, ( blockType ) => {\n\t\t\t\treturn includes( blockType.parent, blockName );\n\t\t\t} ),\n\t\t\t( { name } ) => name\n\t\t);\n\t},\n\t( state ) => [ state.blockTypes ]\n);\n\n/**\n * Returns the block support value for a feature, if defined.\n *\n * @param {Object} state Data state.\n * @param {(string|Object)} nameOrType Block name or type object\n * @param {Array|string} feature Feature to retrieve\n * @param {*} defaultSupports Default value to return if not\n * explicitly defined\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const paragraphBlockSupportValue = useSelect( ( select ) =>\n * select( blocksStore ).getBlockSupport( 'core/paragraph', 'anchor' ),\n * []\n * );\n *\n * return (\n * <p>\n * { sprintf(\n * __( 'core/paragraph supports.anchor value: %s' ),\n * paragraphBlockSupportValue\n * ) }\n * </p>\n * );\n * };\n * ```\n *\n * @return {?*} Block support value\n */\nexport const getBlockSupport = (\n\tstate,\n\tnameOrType,\n\tfeature,\n\tdefaultSupports\n) => {\n\tconst blockType = getNormalizedBlockType( state, nameOrType );\n\tif ( ! blockType?.supports ) {\n\t\treturn defaultSupports;\n\t}\n\n\treturn get( blockType.supports, feature, defaultSupports );\n};\n\n/**\n * Returns true if the block defines support for a feature, or false otherwise.\n *\n * @param {Object} state Data state.\n * @param {(string|Object)} nameOrType Block name or type object.\n * @param {string} feature Feature to test.\n * @param {boolean} defaultSupports Whether feature is supported by\n * default if not explicitly defined.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const paragraphBlockSupportClassName = useSelect( ( select ) =>\n * select( blocksStore ).hasBlockSupport( 'core/paragraph', 'className' ),\n * []\n * );\n *\n * return (\n * <p>\n * { sprintf(\n * __( 'core/paragraph supports custom class name?: %s' ),\n * paragraphBlockSupportClassName\n * ) }\n * /p>\n * );\n * };\n * ```\n *\n * @return {boolean} Whether block supports feature.\n */\nexport function hasBlockSupport( state, nameOrType, feature, defaultSupports ) {\n\treturn !! getBlockSupport( state, nameOrType, feature, defaultSupports );\n}\n\n/**\n * Returns true if the block type by the given name or object value matches a\n * search term, or false otherwise.\n *\n * @param {Object} state Blocks state.\n * @param {(string|Object)} nameOrType Block name or type object.\n * @param {string} searchTerm Search term by which to filter.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const termFound = useSelect(\n * ( select ) =>\n * select( blocksStore ).isMatchingSearchTerm(\n * 'core/navigation',\n * 'theme'\n * ),\n * []\n * );\n *\n * return (\n * <p>\n * { sprintf(\n * __(\n * 'Search term was found in the title, keywords, category or description in block.json: %s'\n * ),\n * termFound\n * ) }\n * </p>\n * );\n * };\n * ```\n *\n * @return {Object[]} Whether block type matches search term.\n */\nexport function isMatchingSearchTerm( state, nameOrType, searchTerm ) {\n\tconst blockType = getNormalizedBlockType( state, nameOrType );\n\n\tconst getNormalizedSearchTerm = flow( [\n\t\t// Disregard diacritics.\n\t\t// Input: \"média\"\n\t\t( term ) => removeAccents( term ?? '' ),\n\n\t\t// Lowercase.\n\t\t// Input: \"MEDIA\"\n\t\t( term ) => term.toLowerCase(),\n\n\t\t// Strip leading and trailing whitespace.\n\t\t// Input: \" media \"\n\t\t( term ) => term.trim(),\n\t] );\n\n\tconst normalizedSearchTerm = getNormalizedSearchTerm( searchTerm );\n\n\tconst isSearchMatch = flow( [\n\t\tgetNormalizedSearchTerm,\n\t\t( normalizedCandidate ) =>\n\t\t\tincludes( normalizedCandidate, normalizedSearchTerm ),\n\t] );\n\n\treturn (\n\t\tisSearchMatch( blockType.title ) ||\n\t\tsome( blockType.keywords, isSearchMatch ) ||\n\t\tisSearchMatch( blockType.category ) ||\n\t\tisSearchMatch( blockType.description )\n\t);\n}\n\n/**\n * Returns a boolean indicating if a block has child blocks or not.\n *\n * @param {Object} state Data state.\n * @param {string} blockName Block type name.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const navigationBlockHasChildBlocks = useSelect( ( select ) =>\n * select( blocksStore ).hasChildBlocks( 'core/navigation' ),\n * []\n * );\n *\n * return (\n * <p>\n * { sprintf(\n * __( 'core/navigation has child blocks: %s' ),\n * navigationBlockHasChildBlocks\n * ) }\n * </p>\n * );\n * };\n * ```\n *\n * @return {boolean} True if a block contains child blocks and false otherwise.\n */\nexport const hasChildBlocks = ( state, blockName ) => {\n\treturn getChildBlockNames( state, blockName ).length > 0;\n};\n\n/**\n * Returns a boolean indicating if a block has at least one child block with inserter support.\n *\n * @param {Object} state Data state.\n * @param {string} blockName Block type name.\n *\n * @example\n * ```js\n * import { __, sprintf } from '@wordpress/i18n';\n * import { store as blocksStore } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n *\n * const ExampleComponent = () => {\n * const navigationBlockHasChildBlocksWithInserterSupport = useSelect( ( select ) =>\n * select( blocksStore ).hasChildBlocksWithInserterSupport(\n * 'core/navigation'\n * ),\n * []\n * );\n *\n * return (\n * <p>\n * { sprintf(\n * __( 'core/navigation has child blocks with inserter support: %s' ),\n * navigationBlockHasChildBlocksWithInserterSupport\n * ) }\n * </p>\n * );\n * };\n * ```\n *\n * @return {boolean} True if a block contains at least one child blocks with inserter support\n * and false otherwise.\n */\nexport const hasChildBlocksWithInserterSupport = ( state, blockName ) => {\n\treturn some( getChildBlockNames( state, blockName ), ( childBlockName ) => {\n\t\treturn hasBlockSupport( state, childBlockName, 'inserter', true );\n\t} );\n};\n\nexport const __experimentalHasContentRoleAttribute = createSelector(\n\t( state, blockTypeName ) => {\n\t\tconst blockType = getBlockType( state, blockTypeName );\n\t\tif ( ! blockType ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn Object.entries( blockType.attributes ).some(\n\t\t\t( [ , { __experimentalRole } ] ) => __experimentalRole === 'content'\n\t\t);\n\t},\n\t( state, blockTypeName ) => [\n\t\tstate.blockTypes[ blockTypeName ]?.attributes,\n\t]\n);\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","/**\n * External dependencies\n */\nimport { isPlainObject } from 'is-plain-object';\nimport { castArray, pick, some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { applyFilters } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { isValidIcon, normalizeIconObject, omit } from '../api/utils';\nimport { DEPRECATED_ENTRY_KEYS } from '../api/constants';\n\n/** @typedef {import('../api/registration').WPBlockVariation} WPBlockVariation */\n/** @typedef {import('../api/registration').WPBlockType} WPBlockType */\n/** @typedef {import('./reducer').WPBlockCategory} WPBlockCategory */\n\nconst { error, warn } = window.console;\n\n/**\n * Mapping of legacy category slugs to their latest normal values, used to\n * accommodate updates of the default set of block categories.\n *\n * @type {Record<string,string>}\n */\nconst LEGACY_CATEGORY_MAPPING = {\n\tcommon: 'text',\n\tformatting: 'text',\n\tlayout: 'design',\n};\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\n/**\n * Takes the unprocessed block type data and applies all the existing filters for the registered block type.\n * Next, it validates all the settings and performs additional processing to the block type definition.\n *\n * @param {WPBlockType} blockType Unprocessed block type settings.\n * @param {Object} thunkArgs Argument object for the thunk middleware.\n * @param {Function} thunkArgs.select Function to select from the store.\n *\n * @return {?WPBlockType} The block, if it has been successfully registered; otherwise `undefined`.\n */\nconst processBlockType = ( blockType, { select } ) => {\n\tconst { name } = blockType;\n\n\tconst settings = applyFilters(\n\t\t'blocks.registerBlockType',\n\t\t{ ...blockType },\n\t\tname,\n\t\tnull\n\t);\n\n\tif ( settings.deprecated ) {\n\t\tsettings.deprecated = settings.deprecated.map( ( deprecation ) =>\n\t\t\tpick(\n\t\t\t\t// Only keep valid deprecation keys.\n\t\t\t\tapplyFilters(\n\t\t\t\t\t'blocks.registerBlockType',\n\t\t\t\t\t// Merge deprecation keys with pre-filter settings\n\t\t\t\t\t// so that filters that depend on specific keys being\n\t\t\t\t\t// present don't fail.\n\t\t\t\t\t{\n\t\t\t\t\t\t// Omit deprecation keys here so that deprecations\n\t\t\t\t\t\t// can opt out of specific keys like \"supports\".\n\t\t\t\t\t\t...omit( blockType, DEPRECATED_ENTRY_KEYS ),\n\t\t\t\t\t\t...deprecation,\n\t\t\t\t\t},\n\t\t\t\t\tname,\n\t\t\t\t\tdeprecation\n\t\t\t\t),\n\t\t\t\tDEPRECATED_ENTRY_KEYS\n\t\t\t)\n\t\t);\n\t}\n\n\tif ( ! isPlainObject( settings ) ) {\n\t\terror( 'Block settings must be a valid object.' );\n\t\treturn;\n\t}\n\n\tif ( ! isFunction( settings.save ) ) {\n\t\terror( 'The \"save\" property must be a valid function.' );\n\t\treturn;\n\t}\n\tif ( 'edit' in settings && ! isFunction( settings.edit ) ) {\n\t\terror( 'The \"edit\" property must be a valid function.' );\n\t\treturn;\n\t}\n\n\t// Canonicalize legacy categories to equivalent fallback.\n\tif ( LEGACY_CATEGORY_MAPPING.hasOwnProperty( settings.category ) ) {\n\t\tsettings.category = LEGACY_CATEGORY_MAPPING[ settings.category ];\n\t}\n\n\tif (\n\t\t'category' in settings &&\n\t\t! some( select.getCategories(), {\n\t\t\tslug: settings.category,\n\t\t} )\n\t) {\n\t\twarn(\n\t\t\t'The block \"' +\n\t\t\t\tname +\n\t\t\t\t'\" is registered with an invalid category \"' +\n\t\t\t\tsettings.category +\n\t\t\t\t'\".'\n\t\t);\n\t\tdelete settings.category;\n\t}\n\n\tif ( ! ( 'title' in settings ) || settings.title === '' ) {\n\t\terror( 'The block \"' + name + '\" must have a title.' );\n\t\treturn;\n\t}\n\tif ( typeof settings.title !== 'string' ) {\n\t\terror( 'Block titles must be strings.' );\n\t\treturn;\n\t}\n\n\tsettings.icon = normalizeIconObject( settings.icon );\n\tif ( ! isValidIcon( settings.icon.src ) ) {\n\t\terror(\n\t\t\t'The icon passed is invalid. ' +\n\t\t\t\t'The icon should be a string, an element, a function, or an object following the specifications documented in https://developer.wordpress.org/block-editor/developers/block-api/block-registration/#icon-optional'\n\t\t);\n\t\treturn;\n\t}\n\n\treturn settings;\n};\n\n/**\n * Returns an action object used in signalling that block types have been added.\n * Ignored from documentation as the recommended usage for this action through registerBlockType from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {WPBlockType|WPBlockType[]} blockTypes Object or array of objects representing blocks to added.\n *\n *\n * @return {Object} Action object.\n */\nexport function addBlockTypes( blockTypes ) {\n\treturn {\n\t\ttype: 'ADD_BLOCK_TYPES',\n\t\tblockTypes: castArray( blockTypes ),\n\t};\n}\n\n/**\n * Signals that the passed block type's settings should be stored in the state.\n *\n * @param {WPBlockType} blockType Unprocessed block type settings.\n */\nexport const __experimentalRegisterBlockType =\n\t( blockType ) =>\n\t( { dispatch, select } ) => {\n\t\tdispatch( {\n\t\t\ttype: 'ADD_UNPROCESSED_BLOCK_TYPE',\n\t\t\tblockType,\n\t\t} );\n\n\t\tconst processedBlockType = processBlockType( blockType, { select } );\n\t\tif ( ! processedBlockType ) {\n\t\t\treturn;\n\t\t}\n\t\tdispatch.addBlockTypes( processedBlockType );\n\t};\n\n/**\n * Signals that all block types should be computed again.\n * It uses stored unprocessed block types and all the most recent list of registered filters.\n *\n * It addresses the issue where third party block filters get registered after third party blocks. A sample sequence:\n * 1. Filter A.\n * 2. Block B.\n * 3. Block C.\n * 4. Filter D.\n * 5. Filter E.\n * 6. Block F.\n * 7. Filter G.\n * In this scenario some filters would not get applied for all blocks because they are registered too late.\n */\nexport const __experimentalReapplyBlockTypeFilters =\n\t() =>\n\t( { dispatch, select } ) => {\n\t\tconst unprocessedBlockTypes =\n\t\t\tselect.__experimentalGetUnprocessedBlockTypes();\n\n\t\tconst processedBlockTypes = Object.keys( unprocessedBlockTypes ).reduce(\n\t\t\t( accumulator, blockName ) => {\n\t\t\t\tconst result = processBlockType(\n\t\t\t\t\tunprocessedBlockTypes[ blockName ],\n\t\t\t\t\t{ select }\n\t\t\t\t);\n\t\t\t\tif ( result ) {\n\t\t\t\t\taccumulator.push( result );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t[]\n\t\t);\n\n\t\tif ( ! processedBlockTypes.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch.addBlockTypes( processedBlockTypes );\n\t};\n\n/**\n * Returns an action object used to remove a registered block type.\n * Ignored from documentation as the recommended usage for this action through unregisterBlockType from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string|string[]} names Block name or array of block names to be removed.\n *\n *\n * @return {Object} Action object.\n */\nexport function removeBlockTypes( names ) {\n\treturn {\n\t\ttype: 'REMOVE_BLOCK_TYPES',\n\t\tnames: castArray( names ),\n\t};\n}\n\n/**\n * Returns an action object used in signalling that new block styles have been added.\n * Ignored from documentation as the recommended usage for this action through registerBlockStyle from @wordpress/blocks.\n *\n * @param {string} blockName Block name.\n * @param {Array|Object} styles Block style object or array of block style objects.\n *\n * @ignore\n *\n * @return {Object} Action object.\n */\nexport function addBlockStyles( blockName, styles ) {\n\treturn {\n\t\ttype: 'ADD_BLOCK_STYLES',\n\t\tstyles: castArray( styles ),\n\t\tblockName,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that block styles have been removed.\n * Ignored from documentation as the recommended usage for this action through unregisterBlockStyle from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} blockName Block name.\n * @param {Array|string} styleNames Block style names or array of block style names.\n *\n * @return {Object} Action object.\n */\nexport function removeBlockStyles( blockName, styleNames ) {\n\treturn {\n\t\ttype: 'REMOVE_BLOCK_STYLES',\n\t\tstyleNames: castArray( styleNames ),\n\t\tblockName,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that new block variations have been added.\n * Ignored from documentation as the recommended usage for this action through registerBlockVariation from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} blockName Block name.\n * @param {WPBlockVariation|WPBlockVariation[]} variations Block variations.\n *\n * @return {Object} Action object.\n */\nexport function addBlockVariations( blockName, variations ) {\n\treturn {\n\t\ttype: 'ADD_BLOCK_VARIATIONS',\n\t\tvariations: castArray( variations ),\n\t\tblockName,\n\t};\n}\n\n/**\n * Returns an action object used in signalling that block variations have been removed.\n * Ignored from documentation as the recommended usage for this action through unregisterBlockVariation from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} blockName Block name.\n * @param {string|string[]} variationNames Block variation names.\n *\n * @return {Object} Action object.\n */\nexport function removeBlockVariations( blockName, variationNames ) {\n\treturn {\n\t\ttype: 'REMOVE_BLOCK_VARIATIONS',\n\t\tvariationNames: castArray( variationNames ),\n\t\tblockName,\n\t};\n}\n\n/**\n * Returns an action object used to set the default block name.\n * Ignored from documentation as the recommended usage for this action through setDefaultBlockName from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} name Block name.\n *\n * @return {Object} Action object.\n */\nexport function setDefaultBlockName( name ) {\n\treturn {\n\t\ttype: 'SET_DEFAULT_BLOCK_NAME',\n\t\tname,\n\t};\n}\n\n/**\n * Returns an action object used to set the name of the block used as a fallback\n * for non-block content.\n * Ignored from documentation as the recommended usage for this action through setFreeformContentHandlerName from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} name Block name.\n *\n * @return {Object} Action object.\n */\nexport function setFreeformFallbackBlockName( name ) {\n\treturn {\n\t\ttype: 'SET_FREEFORM_FALLBACK_BLOCK_NAME',\n\t\tname,\n\t};\n}\n\n/**\n * Returns an action object used to set the name of the block used as a fallback\n * for unregistered blocks.\n * Ignored from documentation as the recommended usage for this action through setUnregisteredTypeHandlerName from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} name Block name.\n *\n * @return {Object} Action object.\n */\nexport function setUnregisteredFallbackBlockName( name ) {\n\treturn {\n\t\ttype: 'SET_UNREGISTERED_FALLBACK_BLOCK_NAME',\n\t\tname,\n\t};\n}\n\n/**\n * Returns an action object used to set the name of the block used\n * when grouping other blocks\n * eg: in \"Group/Ungroup\" interactions\n * Ignored from documentation as the recommended usage for this action through setGroupingBlockName from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} name Block name.\n *\n * @return {Object} Action object.\n */\nexport function setGroupingBlockName( name ) {\n\treturn {\n\t\ttype: 'SET_GROUPING_BLOCK_NAME',\n\t\tname,\n\t};\n}\n\n/**\n * Returns an action object used to set block categories.\n * Ignored from documentation as the recommended usage for this action through setCategories from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {WPBlockCategory[]} categories Block categories.\n *\n * @return {Object} Action object.\n */\nexport function setCategories( categories ) {\n\treturn {\n\t\ttype: 'SET_CATEGORIES',\n\t\tcategories,\n\t};\n}\n\n/**\n * Returns an action object used to update a category.\n * Ignored from documentation as the recommended usage for this action through updateCategory from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} slug Block category slug.\n * @param {Object} category Object containing the category properties that should be updated.\n *\n * @return {Object} Action object.\n */\nexport function updateCategory( slug, category ) {\n\treturn {\n\t\ttype: 'UPDATE_CATEGORY',\n\t\tslug,\n\t\tcategory,\n\t};\n}\n\n/**\n * Returns an action object used to add block collections\n * Ignored from documentation as the recommended usage for this action through registerBlockCollection from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} namespace The namespace of the blocks to put in the collection\n * @param {string} title The title to display in the block inserter\n * @param {Object} icon (optional) The icon to display in the block inserter\n *\n * @return {Object} Action object.\n */\nexport function addBlockCollection( namespace, title, icon ) {\n\treturn {\n\t\ttype: 'ADD_BLOCK_COLLECTION',\n\t\tnamespace,\n\t\ttitle,\n\t\ticon,\n\t};\n}\n\n/**\n * Returns an action object used to remove block collections\n * Ignored from documentation as the recommended usage for this action through unregisterBlockCollection from @wordpress/blocks.\n *\n * @ignore\n *\n * @param {string} namespace The namespace of the blocks to put in the collection\n *\n * @return {Object} Action object.\n */\nexport function removeBlockCollection( namespace ) {\n\treturn {\n\t\ttype: 'REMOVE_BLOCK_COLLECTION',\n\t\tnamespace,\n\t};\n}\n","export const STORE_NAME = 'core/blocks';\n","/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as selectors from './selectors';\nimport * as actions from './actions';\nimport { STORE_NAME } from './constants';\n\n/**\n * Store definition for the blocks namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\treducer,\n\tselectors,\n\tactions,\n} );\n\nregister( store );\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockSerializationDefaultParser\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"autop\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"isShallowEqual\"];","/**\n * Internal dependencies\n */\nimport { getCommentDelimitedContent } from '../serializer';\n\n/**\n * @typedef {Object} Options Serialization options.\n * @property {boolean} [isCommentDelimited=true] Whether to output HTML comments around blocks.\n */\n\n/** @typedef {import(\"./\").WPRawBlock} WPRawBlock */\n\n/**\n * Serializes a block node into the native HTML-comment-powered block format.\n * CAVEAT: This function is intended for re-serializing blocks as parsed by\n * valid parsers and skips any validation steps. This is NOT a generic\n * serialization function for in-memory blocks. For most purposes, see the\n * following functions available in the `@wordpress/blocks` package:\n *\n * @see serializeBlock\n * @see serialize\n *\n * For more on the format of block nodes as returned by valid parsers:\n *\n * @see `@wordpress/block-serialization-default-parser` package\n * @see `@wordpress/block-serialization-spec-parser` package\n *\n * @param {WPRawBlock} rawBlock A block node as returned by a valid parser.\n * @param {Options} [options={}] Serialization options.\n *\n * @return {string} An HTML string representing a block.\n */\nexport function serializeRawBlock( rawBlock, options = {} ) {\n\tconst { isCommentDelimited = true } = options;\n\tconst {\n\t\tblockName,\n\t\tattrs = {},\n\t\tinnerBlocks = [],\n\t\tinnerContent = [],\n\t} = rawBlock;\n\n\tlet childIndex = 0;\n\tconst content = innerContent\n\t\t.map( ( item ) =>\n\t\t\t// `null` denotes a nested block, otherwise we have an HTML fragment.\n\t\t\titem !== null\n\t\t\t\t? item\n\t\t\t\t: serializeRawBlock( innerBlocks[ childIndex++ ], options )\n\t\t)\n\t\t.join( '\\n' )\n\t\t.replace( /\\n+/g, '\\n' )\n\t\t.trim();\n\n\treturn isCommentDelimited\n\t\t? getCommentDelimitedContent( blockName, attrs, content )\n\t\t: content;\n}\n","/**\n * WordPress dependencies\n */\nimport {\n\tComponent,\n\tcloneElement,\n\trenderToString,\n\tRawHTML,\n} from '@wordpress/element';\nimport { hasFilter, applyFilters } from '@wordpress/hooks';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\nimport { removep } from '@wordpress/autop';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockType,\n\tgetFreeformContentHandlerName,\n\tgetUnregisteredTypeHandlerName,\n} from './registration';\nimport { serializeRawBlock } from './parser/serialize-raw-block';\nimport { isUnmodifiedDefaultBlock, normalizeBlockType } from './utils';\n\n/** @typedef {import('./parser').WPBlock} WPBlock */\n\n/**\n * @typedef {Object} WPBlockSerializationOptions Serialization Options.\n *\n * @property {boolean} isInnerBlocks Whether we are serializing inner blocks.\n */\n\n/**\n * Returns the block's default classname from its name.\n *\n * @param {string} blockName The block name.\n *\n * @return {string} The block's default class.\n */\nexport function getBlockDefaultClassName( blockName ) {\n\t// Generated HTML classes for blocks follow the `wp-block-{name}` nomenclature.\n\t// Blocks provided by WordPress drop the prefixes 'core/' or 'core-' (historically used in 'core-embed/').\n\tconst className =\n\t\t'wp-block-' + blockName.replace( /\\//, '-' ).replace( /^core-/, '' );\n\n\treturn applyFilters(\n\t\t'blocks.getBlockDefaultClassName',\n\t\tclassName,\n\t\tblockName\n\t);\n}\n\n/**\n * Returns the block's default menu item classname from its name.\n *\n * @param {string} blockName The block name.\n *\n * @return {string} The block's default menu item class.\n */\nexport function getBlockMenuDefaultClassName( blockName ) {\n\t// Generated HTML classes for blocks follow the `editor-block-list-item-{name}` nomenclature.\n\t// Blocks provided by WordPress drop the prefixes 'core/' or 'core-' (historically used in 'core-embed/').\n\tconst className =\n\t\t'editor-block-list-item-' +\n\t\tblockName.replace( /\\//, '-' ).replace( /^core-/, '' );\n\n\treturn applyFilters(\n\t\t'blocks.getBlockMenuDefaultClassName',\n\t\tclassName,\n\t\tblockName\n\t);\n}\n\nconst blockPropsProvider = {};\nconst innerBlocksPropsProvider = {};\n\n/**\n * Call within a save function to get the props for the block wrapper.\n *\n * @param {Object} props Optional. Props to pass to the element.\n */\nexport function getBlockProps( props = {} ) {\n\tconst { blockType, attributes } = blockPropsProvider;\n\treturn applyFilters(\n\t\t'blocks.getSaveContent.extraProps',\n\t\t{ ...props },\n\t\tblockType,\n\t\tattributes\n\t);\n}\n\n/**\n * Call within a save function to get the props for the inner blocks wrapper.\n *\n * @param {Object} props Optional. Props to pass to the element.\n */\nexport function getInnerBlocksProps( props = {} ) {\n\tconst { innerBlocks } = innerBlocksPropsProvider;\n\t// Value is an array of blocks, so defer to block serializer.\n\tconst html = serialize( innerBlocks, { isInnerBlocks: true } );\n\t// Use special-cased raw HTML tag to avoid default escaping.\n\tconst children = <RawHTML>{ html }</RawHTML>;\n\n\treturn { ...props, children };\n}\n\n/**\n * Given a block type containing a save render implementation and attributes, returns the\n * enhanced element to be saved or string when raw HTML expected.\n *\n * @param {string|Object} blockTypeOrName Block type or name.\n * @param {Object} attributes Block attributes.\n * @param {?Array} innerBlocks Nested blocks.\n *\n * @return {Object|string} Save element or raw HTML string.\n */\nexport function getSaveElement(\n\tblockTypeOrName,\n\tattributes,\n\tinnerBlocks = []\n) {\n\tconst blockType = normalizeBlockType( blockTypeOrName );\n\tlet { save } = blockType;\n\n\t// Component classes are unsupported for save since serialization must\n\t// occur synchronously. For improved interoperability with higher-order\n\t// components which often return component class, emulate basic support.\n\tif ( save.prototype instanceof Component ) {\n\t\tconst instance = new save( { attributes } );\n\t\tsave = instance.render.bind( instance );\n\t}\n\n\tblockPropsProvider.blockType = blockType;\n\tblockPropsProvider.attributes = attributes;\n\tinnerBlocksPropsProvider.innerBlocks = innerBlocks;\n\n\tlet element = save( { attributes, innerBlocks } );\n\n\tif (\n\t\telement !== null &&\n\t\ttypeof element === 'object' &&\n\t\thasFilter( 'blocks.getSaveContent.extraProps' ) &&\n\t\t! ( blockType.apiVersion > 1 )\n\t) {\n\t\t/**\n\t\t * Filters the props applied to the block save result element.\n\t\t *\n\t\t * @param {Object} props Props applied to save element.\n\t\t * @param {WPBlock} blockType Block type definition.\n\t\t * @param {Object} attributes Block attributes.\n\t\t */\n\t\tconst props = applyFilters(\n\t\t\t'blocks.getSaveContent.extraProps',\n\t\t\t{ ...element.props },\n\t\t\tblockType,\n\t\t\tattributes\n\t\t);\n\n\t\tif ( ! isShallowEqual( props, element.props ) ) {\n\t\t\telement = cloneElement( element, props );\n\t\t}\n\t}\n\n\t/**\n\t * Filters the save result of a block during serialization.\n\t *\n\t * @param {WPElement} element Block save result.\n\t * @param {WPBlock} blockType Block type definition.\n\t * @param {Object} attributes Block attributes.\n\t */\n\treturn applyFilters(\n\t\t'blocks.getSaveElement',\n\t\telement,\n\t\tblockType,\n\t\tattributes\n\t);\n}\n\n/**\n * Given a block type containing a save render implementation and attributes, returns the\n * static markup to be saved.\n *\n * @param {string|Object} blockTypeOrName Block type or name.\n * @param {Object} attributes Block attributes.\n * @param {?Array} innerBlocks Nested blocks.\n *\n * @return {string} Save content.\n */\nexport function getSaveContent( blockTypeOrName, attributes, innerBlocks ) {\n\tconst blockType = normalizeBlockType( blockTypeOrName );\n\n\treturn renderToString(\n\t\tgetSaveElement( blockType, attributes, innerBlocks )\n\t);\n}\n\n/**\n * Returns attributes which are to be saved and serialized into the block\n * comment delimiter.\n *\n * When a block exists in memory it contains as its attributes both those\n * parsed the block comment delimiter _and_ those which matched from the\n * contents of the block.\n *\n * This function returns only those attributes which are needed to persist and\n * which cannot be matched from the block content.\n *\n * @param {Object<string,*>} blockType Block type.\n * @param {Object<string,*>} attributes Attributes from in-memory block data.\n *\n * @return {Object<string,*>} Subset of attributes for comment serialization.\n */\nexport function getCommentAttributes( blockType, attributes ) {\n\treturn Object.entries( blockType.attributes ?? {} ).reduce(\n\t\t( accumulator, [ key, attributeSchema ] ) => {\n\t\t\tconst value = attributes[ key ];\n\t\t\t// Ignore undefined values.\n\t\t\tif ( undefined === value ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\t// Ignore all attributes but the ones with an \"undefined\" source\n\t\t\t// \"undefined\" source refers to attributes saved in the block comment.\n\t\t\tif ( attributeSchema.source !== undefined ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\t// Ignore default value.\n\t\t\tif (\n\t\t\t\t'default' in attributeSchema &&\n\t\t\t\tattributeSchema.default === value\n\t\t\t) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\n\t\t\t// Otherwise, include in comment set.\n\t\t\taccumulator[ key ] = value;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n}\n\n/**\n * Given an attributes object, returns a string in the serialized attributes\n * format prepared for post content.\n *\n * @param {Object} attributes Attributes object.\n *\n * @return {string} Serialized attributes.\n */\nexport function serializeAttributes( attributes ) {\n\treturn (\n\t\tJSON.stringify( attributes )\n\t\t\t// Don't break HTML comments.\n\t\t\t.replace( /--/g, '\\\\u002d\\\\u002d' )\n\n\t\t\t// Don't break non-standard-compliant tools.\n\t\t\t.replace( /</g, '\\\\u003c' )\n\t\t\t.replace( />/g, '\\\\u003e' )\n\t\t\t.replace( /&/g, '\\\\u0026' )\n\n\t\t\t// Bypass server stripslashes behavior which would unescape stringify's\n\t\t\t// escaping of quotation mark.\n\t\t\t//\n\t\t\t// See: https://developer.wordpress.org/reference/functions/wp_kses_stripslashes/\n\t\t\t.replace( /\\\\\"/g, '\\\\u0022' )\n\t);\n}\n\n/**\n * Given a block object, returns the Block's Inner HTML markup.\n *\n * @param {Object} block Block instance.\n *\n * @return {string} HTML.\n */\nexport function getBlockInnerHTML( block ) {\n\t// If block was parsed as invalid or encounters an error while generating\n\t// save content, use original content instead to avoid content loss. If a\n\t// block contains nested content, exempt it from this condition because we\n\t// otherwise have no access to its original content and content loss would\n\t// still occur.\n\tlet saveContent = block.originalContent;\n\tif ( block.isValid || block.innerBlocks.length ) {\n\t\ttry {\n\t\t\tsaveContent = getSaveContent(\n\t\t\t\tblock.name,\n\t\t\t\tblock.attributes,\n\t\t\t\tblock.innerBlocks\n\t\t\t);\n\t\t} catch ( error ) {}\n\t}\n\n\treturn saveContent;\n}\n\n/**\n * Returns the content of a block, including comment delimiters.\n *\n * @param {string} rawBlockName Block name.\n * @param {Object} attributes Block attributes.\n * @param {string} content Block save content.\n *\n * @return {string} Comment-delimited block content.\n */\nexport function getCommentDelimitedContent(\n\trawBlockName,\n\tattributes,\n\tcontent\n) {\n\tconst serializedAttributes =\n\t\tattributes && Object.entries( attributes ).length\n\t\t\t? serializeAttributes( attributes ) + ' '\n\t\t\t: '';\n\n\t// Strip core blocks of their namespace prefix.\n\tconst blockName = rawBlockName?.startsWith( 'core/' )\n\t\t? rawBlockName.slice( 5 )\n\t\t: rawBlockName;\n\n\t// @todo make the `wp:` prefix potentially configurable.\n\n\tif ( ! content ) {\n\t\treturn `<!-- wp:${ blockName } ${ serializedAttributes }/-->`;\n\t}\n\n\treturn (\n\t\t`<!-- wp:${ blockName } ${ serializedAttributes }-->\\n` +\n\t\tcontent +\n\t\t`\\n<!-- /wp:${ blockName } -->`\n\t);\n}\n\n/**\n * Returns the content of a block, including comment delimiters, determining\n * serialized attributes and content form from the current state of the block.\n *\n * @param {WPBlock} block Block instance.\n * @param {WPBlockSerializationOptions} options Serialization options.\n *\n * @return {string} Serialized block.\n */\nexport function serializeBlock( block, { isInnerBlocks = false } = {} ) {\n\tif ( ! block.isValid && block.__unstableBlockSource ) {\n\t\treturn serializeRawBlock( block.__unstableBlockSource );\n\t}\n\n\tconst blockName = block.name;\n\tconst saveContent = getBlockInnerHTML( block );\n\n\tif (\n\t\tblockName === getUnregisteredTypeHandlerName() ||\n\t\t( ! isInnerBlocks && blockName === getFreeformContentHandlerName() )\n\t) {\n\t\treturn saveContent;\n\t}\n\n\tconst blockType = getBlockType( blockName );\n\tif ( ! blockType ) {\n\t\treturn saveContent;\n\t}\n\n\tconst saveAttributes = getCommentAttributes( blockType, block.attributes );\n\treturn getCommentDelimitedContent( blockName, saveAttributes, saveContent );\n}\n\nexport function __unstableSerializeAndClean( blocks ) {\n\t// A single unmodified default block is assumed to\n\t// be equivalent to an empty post.\n\tif ( blocks.length === 1 && isUnmodifiedDefaultBlock( blocks[ 0 ] ) ) {\n\t\tblocks = [];\n\t}\n\n\tlet content = serialize( blocks );\n\n\t// For compatibility, treat a post consisting of a\n\t// single freeform block as legacy content and apply\n\t// pre-block-editor removep'd content formatting.\n\tif (\n\t\tblocks.length === 1 &&\n\t\tblocks[ 0 ].name === getFreeformContentHandlerName()\n\t) {\n\t\tcontent = removep( content );\n\t}\n\n\treturn content;\n}\n\n/**\n * Takes a block or set of blocks and returns the serialized post content.\n *\n * @param {Array} blocks Block(s) to serialize.\n * @param {WPBlockSerializationOptions} options Serialization options.\n *\n * @return {string} The post content.\n */\nexport default function serialize( blocks, options ) {\n\tconst blocksArray = Array.isArray( blocks ) ? blocks : [ blocks ];\n\treturn blocksArray\n\t\t.map( ( block ) => serializeBlock( block, options ) )\n\t\t.join( '\\n\\n' );\n}\n","/**\n * generated from https://raw.githubusercontent.com/w3c/html/26b5126f96f736f796b9e29718138919dd513744/entities.json\n * do not edit\n */\nexport default {\nAacute:\"Á\",aacute:\"á\",Abreve:\"Ă\",abreve:\"ă\",ac:\"∾\",acd:\"∿\",acE:\"∾̳\",Acirc:\"Â\",acirc:\"â\",acute:\"´\",Acy:\"А\",acy:\"а\",AElig:\"Æ\",aelig:\"æ\",af:\"\\u2061\",Afr:\"𝔄\",afr:\"𝔞\",Agrave:\"À\",agrave:\"à\",alefsym:\"ℵ\",aleph:\"ℵ\",Alpha:\"Α\",alpha:\"α\",Amacr:\"Ā\",amacr:\"ā\",amalg:\"⨿\",amp:\"&\",AMP:\"&\",andand:\"⩕\",And:\"⩓\",and:\"∧\",andd:\"⩜\",andslope:\"⩘\",andv:\"⩚\",ang:\"∠\",ange:\"⦤\",angle:\"∠\",angmsdaa:\"⦨\",angmsdab:\"⦩\",angmsdac:\"⦪\",angmsdad:\"⦫\",angmsdae:\"⦬\",angmsdaf:\"⦭\",angmsdag:\"⦮\",angmsdah:\"⦯\",angmsd:\"∡\",angrt:\"∟\",angrtvb:\"⊾\",angrtvbd:\"⦝\",angsph:\"∢\",angst:\"Å\",angzarr:\"⍼\",Aogon:\"Ą\",aogon:\"ą\",Aopf:\"𝔸\",aopf:\"𝕒\",apacir:\"⩯\",ap:\"≈\",apE:\"⩰\",ape:\"≊\",apid:\"≋\",apos:\"'\",ApplyFunction:\"\\u2061\",approx:\"≈\",approxeq:\"≊\",Aring:\"Å\",aring:\"å\",Ascr:\"𝒜\",ascr:\"𝒶\",Assign:\"≔\",ast:\"*\",asymp:\"≈\",asympeq:\"≍\",Atilde:\"Ã\",atilde:\"ã\",Auml:\"Ä\",auml:\"ä\",awconint:\"∳\",awint:\"⨑\",backcong:\"≌\",backepsilon:\"϶\",backprime:\"‵\",backsim:\"∽\",backsimeq:\"⋍\",Backslash:\"∖\",Barv:\"⫧\",barvee:\"⊽\",barwed:\"⌅\",Barwed:\"⌆\",barwedge:\"⌅\",bbrk:\"⎵\",bbrktbrk:\"⎶\",bcong:\"≌\",Bcy:\"Б\",bcy:\"б\",bdquo:\"„\",becaus:\"∵\",because:\"∵\",Because:\"∵\",bemptyv:\"⦰\",bepsi:\"϶\",bernou:\"ℬ\",Bernoullis:\"ℬ\",Beta:\"Β\",beta:\"β\",beth:\"ℶ\",between:\"≬\",Bfr:\"𝔅\",bfr:\"𝔟\",bigcap:\"⋂\",bigcirc:\"◯\",bigcup:\"⋃\",bigodot:\"⨀\",bigoplus:\"⨁\",bigotimes:\"⨂\",bigsqcup:\"⨆\",bigstar:\"★\",bigtriangledown:\"▽\",bigtriangleup:\"△\",biguplus:\"⨄\",bigvee:\"⋁\",bigwedge:\"⋀\",bkarow:\"⤍\",blacklozenge:\"⧫\",blacksquare:\"▪\",blacktriangle:\"▴\",blacktriangledown:\"▾\",blacktriangleleft:\"◂\",blacktriangleright:\"▸\",blank:\"␣\",blk12:\"▒\",blk14:\"░\",blk34:\"▓\",block:\"█\",bne:\"=⃥\",bnequiv:\"≡⃥\",bNot:\"⫭\",bnot:\"⌐\",Bopf:\"𝔹\",bopf:\"𝕓\",bot:\"⊥\",bottom:\"⊥\",bowtie:\"⋈\",boxbox:\"⧉\",boxdl:\"┐\",boxdL:\"╕\",boxDl:\"╖\",boxDL:\"╗\",boxdr:\"┌\",boxdR:\"╒\",boxDr:\"╓\",boxDR:\"╔\",boxh:\"─\",boxH:\"═\",boxhd:\"┬\",boxHd:\"╤\",boxhD:\"╥\",boxHD:\"╦\",boxhu:\"┴\",boxHu:\"╧\",boxhU:\"╨\",boxHU:\"╩\",boxminus:\"⊟\",boxplus:\"⊞\",boxtimes:\"⊠\",boxul:\"┘\",boxuL:\"╛\",boxUl:\"╜\",boxUL:\"╝\",boxur:\"└\",boxuR:\"╘\",boxUr:\"╙\",boxUR:\"╚\",boxv:\"│\",boxV:\"║\",boxvh:\"┼\",boxvH:\"╪\",boxVh:\"╫\",boxVH:\"╬\",boxvl:\"┤\",boxvL:\"╡\",boxVl:\"╢\",boxVL:\"╣\",boxvr:\"├\",boxvR:\"╞\",boxVr:\"╟\",boxVR:\"╠\",bprime:\"‵\",breve:\"˘\",Breve:\"˘\",brvbar:\"¦\",bscr:\"𝒷\",Bscr:\"ℬ\",bsemi:\"⁏\",bsim:\"∽\",bsime:\"⋍\",bsolb:\"⧅\",bsol:\"\\\\\",bsolhsub:\"⟈\",bull:\"•\",bullet:\"•\",bump:\"≎\",bumpE:\"⪮\",bumpe:\"≏\",Bumpeq:\"≎\",bumpeq:\"≏\",Cacute:\"Ć\",cacute:\"ć\",capand:\"⩄\",capbrcup:\"⩉\",capcap:\"⩋\",cap:\"∩\",Cap:\"⋒\",capcup:\"⩇\",capdot:\"⩀\",CapitalDifferentialD:\"ⅅ\",caps:\"∩︀\",caret:\"⁁\",caron:\"ˇ\",Cayleys:\"ℭ\",ccaps:\"⩍\",Ccaron:\"Č\",ccaron:\"č\",Ccedil:\"Ç\",ccedil:\"ç\",Ccirc:\"Ĉ\",ccirc:\"ĉ\",Cconint:\"∰\",ccups:\"⩌\",ccupssm:\"⩐\",Cdot:\"Ċ\",cdot:\"ċ\",cedil:\"¸\",Cedilla:\"¸\",cemptyv:\"⦲\",cent:\"¢\",centerdot:\"·\",CenterDot:\"·\",cfr:\"𝔠\",Cfr:\"ℭ\",CHcy:\"Ч\",chcy:\"ч\",check:\"✓\",checkmark:\"✓\",Chi:\"Χ\",chi:\"χ\",circ:\"ˆ\",circeq:\"≗\",circlearrowleft:\"↺\",circlearrowright:\"↻\",circledast:\"⊛\",circledcirc:\"⊚\",circleddash:\"⊝\",CircleDot:\"⊙\",circledR:\"®\",circledS:\"Ⓢ\",CircleMinus:\"⊖\",CirclePlus:\"⊕\",CircleTimes:\"⊗\",cir:\"○\",cirE:\"⧃\",cire:\"≗\",cirfnint:\"⨐\",cirmid:\"⫯\",cirscir:\"⧂\",ClockwiseContourIntegral:\"∲\",CloseCurlyDoubleQuote:\"”\",CloseCurlyQuote:\"’\",clubs:\"♣\",clubsuit:\"♣\",colon:\":\",Colon:\"∷\",Colone:\"⩴\",colone:\"≔\",coloneq:\"≔\",comma:\",\",commat:\"@\",comp:\"∁\",compfn:\"∘\",complement:\"∁\",complexes:\"ℂ\",cong:\"≅\",congdot:\"⩭\",Congruent:\"≡\",conint:\"∮\",Conint:\"∯\",ContourIntegral:\"∮\",copf:\"𝕔\",Copf:\"ℂ\",coprod:\"∐\",Coproduct:\"∐\",copy:\"©\",COPY:\"©\",copysr:\"℗\",CounterClockwiseContourIntegral:\"∳\",crarr:\"↵\",cross:\"✗\",Cross:\"⨯\",Cscr:\"𝒞\",cscr:\"𝒸\",csub:\"⫏\",csube:\"⫑\",csup:\"⫐\",csupe:\"⫒\",ctdot:\"⋯\",cudarrl:\"⤸\",cudarrr:\"⤵\",cuepr:\"⋞\",cuesc:\"⋟\",cularr:\"↶\",cularrp:\"⤽\",cupbrcap:\"⩈\",cupcap:\"⩆\",CupCap:\"≍\",cup:\"∪\",Cup:\"⋓\",cupcup:\"⩊\",cupdot:\"⊍\",cupor:\"⩅\",cups:\"∪︀\",curarr:\"↷\",curarrm:\"⤼\",curlyeqprec:\"⋞\",curlyeqsucc:\"⋟\",curlyvee:\"⋎\",curlywedge:\"⋏\",curren:\"¤\",curvearrowleft:\"↶\",curvearrowright:\"↷\",cuvee:\"⋎\",cuwed:\"⋏\",cwconint:\"∲\",cwint:\"∱\",cylcty:\"⌭\",dagger:\"†\",Dagger:\"‡\",daleth:\"ℸ\",darr:\"↓\",Darr:\"↡\",dArr:\"⇓\",dash:\"‐\",Dashv:\"⫤\",dashv:\"⊣\",dbkarow:\"⤏\",dblac:\"˝\",Dcaron:\"Ď\",dcaron:\"ď\",Dcy:\"Д\",dcy:\"д\",ddagger:\"‡\",ddarr:\"⇊\",DD:\"ⅅ\",dd:\"ⅆ\",DDotrahd:\"⤑\",ddotseq:\"⩷\",deg:\"°\",Del:\"∇\",Delta:\"Δ\",delta:\"δ\",demptyv:\"⦱\",dfisht:\"⥿\",Dfr:\"𝔇\",dfr:\"𝔡\",dHar:\"⥥\",dharl:\"⇃\",dharr:\"⇂\",DiacriticalAcute:\"´\",DiacriticalDot:\"˙\",DiacriticalDoubleAcute:\"˝\",DiacriticalGrave:\"`\",DiacriticalTilde:\"˜\",diam:\"⋄\",diamond:\"⋄\",Diamond:\"⋄\",diamondsuit:\"♦\",diams:\"♦\",die:\"¨\",DifferentialD:\"ⅆ\",digamma:\"ϝ\",disin:\"⋲\",div:\"÷\",divide:\"÷\",divideontimes:\"⋇\",divonx:\"⋇\",DJcy:\"Ђ\",djcy:\"ђ\",dlcorn:\"⌞\",dlcrop:\"⌍\",dollar:\"$\",Dopf:\"𝔻\",dopf:\"𝕕\",Dot:\"¨\",dot:\"˙\",DotDot:\"⃜\",doteq:\"≐\",doteqdot:\"≑\",DotEqual:\"≐\",dotminus:\"∸\",dotplus:\"∔\",dotsquare:\"⊡\",doublebarwedge:\"⌆\",DoubleContourIntegral:\"∯\",DoubleDot:\"¨\",DoubleDownArrow:\"⇓\",DoubleLeftArrow:\"⇐\",DoubleLeftRightArrow:\"⇔\",DoubleLeftTee:\"⫤\",DoubleLongLeftArrow:\"⟸\",DoubleLongLeftRightArrow:\"⟺\",DoubleLongRightArrow:\"⟹\",DoubleRightArrow:\"⇒\",DoubleRightTee:\"⊨\",DoubleUpArrow:\"⇑\",DoubleUpDownArrow:\"⇕\",DoubleVerticalBar:\"∥\",DownArrowBar:\"⤓\",downarrow:\"↓\",DownArrow:\"↓\",Downarrow:\"⇓\",DownArrowUpArrow:\"⇵\",DownBreve:\"̑\",downdownarrows:\"⇊\",downharpoonleft:\"⇃\",downharpoonright:\"⇂\",DownLeftRightVector:\"⥐\",DownLeftTeeVector:\"⥞\",DownLeftVectorBar:\"⥖\",DownLeftVector:\"↽\",DownRightTeeVector:\"⥟\",DownRightVectorBar:\"⥗\",DownRightVector:\"⇁\",DownTeeArrow:\"↧\",DownTee:\"⊤\",drbkarow:\"⤐\",drcorn:\"⌟\",drcrop:\"⌌\",Dscr:\"𝒟\",dscr:\"𝒹\",DScy:\"Ѕ\",dscy:\"ѕ\",dsol:\"⧶\",Dstrok:\"Đ\",dstrok:\"đ\",dtdot:\"⋱\",dtri:\"▿\",dtrif:\"▾\",duarr:\"⇵\",duhar:\"⥯\",dwangle:\"⦦\",DZcy:\"Џ\",dzcy:\"џ\",dzigrarr:\"⟿\",Eacute:\"É\",eacute:\"é\",easter:\"⩮\",Ecaron:\"Ě\",ecaron:\"ě\",Ecirc:\"Ê\",ecirc:\"ê\",ecir:\"≖\",ecolon:\"≕\",Ecy:\"Э\",ecy:\"э\",eDDot:\"⩷\",Edot:\"Ė\",edot:\"ė\",eDot:\"≑\",ee:\"ⅇ\",efDot:\"≒\",Efr:\"𝔈\",efr:\"𝔢\",eg:\"⪚\",Egrave:\"È\",egrave:\"è\",egs:\"⪖\",egsdot:\"⪘\",el:\"⪙\",Element:\"∈\",elinters:\"⏧\",ell:\"ℓ\",els:\"⪕\",elsdot:\"⪗\",Emacr:\"Ē\",emacr:\"ē\",empty:\"∅\",emptyset:\"∅\",EmptySmallSquare:\"◻\",emptyv:\"∅\",EmptyVerySmallSquare:\"▫\",emsp13:\" \",emsp14:\" \",emsp:\" \",ENG:\"Ŋ\",eng:\"ŋ\",ensp:\" \",Eogon:\"Ę\",eogon:\"ę\",Eopf:\"𝔼\",eopf:\"𝕖\",epar:\"⋕\",eparsl:\"⧣\",eplus:\"⩱\",epsi:\"ε\",Epsilon:\"Ε\",epsilon:\"ε\",epsiv:\"ϵ\",eqcirc:\"≖\",eqcolon:\"≕\",eqsim:\"≂\",eqslantgtr:\"⪖\",eqslantless:\"⪕\",Equal:\"⩵\",equals:\"=\",EqualTilde:\"≂\",equest:\"≟\",Equilibrium:\"⇌\",equiv:\"≡\",equivDD:\"⩸\",eqvparsl:\"⧥\",erarr:\"⥱\",erDot:\"≓\",escr:\"ℯ\",Escr:\"ℰ\",esdot:\"≐\",Esim:\"⩳\",esim:\"≂\",Eta:\"Η\",eta:\"η\",ETH:\"Ð\",eth:\"ð\",Euml:\"Ë\",euml:\"ë\",euro:\"€\",excl:\"!\",exist:\"∃\",Exists:\"∃\",expectation:\"ℰ\",exponentiale:\"ⅇ\",ExponentialE:\"ⅇ\",fallingdotseq:\"≒\",Fcy:\"Ф\",fcy:\"ф\",female:\"♀\",ffilig:\"ffi\",fflig:\"ff\",ffllig:\"ffl\",Ffr:\"𝔉\",ffr:\"𝔣\",filig:\"fi\",FilledSmallSquare:\"◼\",FilledVerySmallSquare:\"▪\",fjlig:\"fj\",flat:\"♭\",fllig:\"fl\",fltns:\"▱\",fnof:\"ƒ\",Fopf:\"𝔽\",fopf:\"𝕗\",forall:\"∀\",ForAll:\"∀\",fork:\"⋔\",forkv:\"⫙\",Fouriertrf:\"ℱ\",fpartint:\"⨍\",frac12:\"½\",frac13:\"⅓\",frac14:\"¼\",frac15:\"⅕\",frac16:\"⅙\",frac18:\"⅛\",frac23:\"⅔\",frac25:\"⅖\",frac34:\"¾\",frac35:\"⅗\",frac38:\"⅜\",frac45:\"⅘\",frac56:\"⅚\",frac58:\"⅝\",frac78:\"⅞\",frasl:\"⁄\",frown:\"⌢\",fscr:\"𝒻\",Fscr:\"ℱ\",gacute:\"ǵ\",Gamma:\"Γ\",gamma:\"γ\",Gammad:\"Ϝ\",gammad:\"ϝ\",gap:\"⪆\",Gbreve:\"Ğ\",gbreve:\"ğ\",Gcedil:\"Ģ\",Gcirc:\"Ĝ\",gcirc:\"ĝ\",Gcy:\"Г\",gcy:\"г\",Gdot:\"Ġ\",gdot:\"ġ\",ge:\"≥\",gE:\"≧\",gEl:\"⪌\",gel:\"⋛\",geq:\"≥\",geqq:\"≧\",geqslant:\"⩾\",gescc:\"⪩\",ges:\"⩾\",gesdot:\"⪀\",gesdoto:\"⪂\",gesdotol:\"⪄\",gesl:\"⋛︀\",gesles:\"⪔\",Gfr:\"𝔊\",gfr:\"𝔤\",gg:\"≫\",Gg:\"⋙\",ggg:\"⋙\",gimel:\"ℷ\",GJcy:\"Ѓ\",gjcy:\"ѓ\",gla:\"⪥\",gl:\"≷\",glE:\"⪒\",glj:\"⪤\",gnap:\"⪊\",gnapprox:\"⪊\",gne:\"⪈\",gnE:\"≩\",gneq:\"⪈\",gneqq:\"≩\",gnsim:\"⋧\",Gopf:\"𝔾\",gopf:\"𝕘\",grave:\"`\",GreaterEqual:\"≥\",GreaterEqualLess:\"⋛\",GreaterFullEqual:\"≧\",GreaterGreater:\"⪢\",GreaterLess:\"≷\",GreaterSlantEqual:\"⩾\",GreaterTilde:\"≳\",Gscr:\"𝒢\",gscr:\"ℊ\",gsim:\"≳\",gsime:\"⪎\",gsiml:\"⪐\",gtcc:\"⪧\",gtcir:\"⩺\",gt:\">\",GT:\">\",Gt:\"≫\",gtdot:\"⋗\",gtlPar:\"⦕\",gtquest:\"⩼\",gtrapprox:\"⪆\",gtrarr:\"⥸\",gtrdot:\"⋗\",gtreqless:\"⋛\",gtreqqless:\"⪌\",gtrless:\"≷\",gtrsim:\"≳\",gvertneqq:\"≩︀\",gvnE:\"≩︀\",Hacek:\"ˇ\",hairsp:\" \",half:\"½\",hamilt:\"ℋ\",HARDcy:\"Ъ\",hardcy:\"ъ\",harrcir:\"⥈\",harr:\"↔\",hArr:\"⇔\",harrw:\"↭\",Hat:\"^\",hbar:\"ℏ\",Hcirc:\"Ĥ\",hcirc:\"ĥ\",hearts:\"♥\",heartsuit:\"♥\",hellip:\"…\",hercon:\"⊹\",hfr:\"𝔥\",Hfr:\"ℌ\",HilbertSpace:\"ℋ\",hksearow:\"⤥\",hkswarow:\"⤦\",hoarr:\"⇿\",homtht:\"∻\",hookleftarrow:\"↩\",hookrightarrow:\"↪\",hopf:\"𝕙\",Hopf:\"ℍ\",horbar:\"―\",HorizontalLine:\"─\",hscr:\"𝒽\",Hscr:\"ℋ\",hslash:\"ℏ\",Hstrok:\"Ħ\",hstrok:\"ħ\",HumpDownHump:\"≎\",HumpEqual:\"≏\",hybull:\"⁃\",hyphen:\"‐\",Iacute:\"Í\",iacute:\"í\",ic:\"\\u2063\",Icirc:\"Î\",icirc:\"î\",Icy:\"И\",icy:\"и\",Idot:\"İ\",IEcy:\"Е\",iecy:\"е\",iexcl:\"¡\",iff:\"⇔\",ifr:\"𝔦\",Ifr:\"ℑ\",Igrave:\"Ì\",igrave:\"ì\",ii:\"ⅈ\",iiiint:\"⨌\",iiint:\"∭\",iinfin:\"⧜\",iiota:\"℩\",IJlig:\"IJ\",ijlig:\"ij\",Imacr:\"Ī\",imacr:\"ī\",image:\"ℑ\",ImaginaryI:\"ⅈ\",imagline:\"ℐ\",imagpart:\"ℑ\",imath:\"ı\",Im:\"ℑ\",imof:\"⊷\",imped:\"Ƶ\",Implies:\"⇒\",incare:\"℅\",in:\"∈\",infin:\"∞\",infintie:\"⧝\",inodot:\"ı\",intcal:\"⊺\",int:\"∫\",Int:\"∬\",integers:\"ℤ\",Integral:\"∫\",intercal:\"⊺\",Intersection:\"⋂\",intlarhk:\"⨗\",intprod:\"⨼\",InvisibleComma:\"\\u2063\",InvisibleTimes:\"\\u2062\",IOcy:\"Ё\",iocy:\"ё\",Iogon:\"Į\",iogon:\"į\",Iopf:\"𝕀\",iopf:\"𝕚\",Iota:\"Ι\",iota:\"ι\",iprod:\"⨼\",iquest:\"¿\",iscr:\"𝒾\",Iscr:\"ℐ\",isin:\"∈\",isindot:\"⋵\",isinE:\"⋹\",isins:\"⋴\",isinsv:\"⋳\",isinv:\"∈\",it:\"\\u2062\",Itilde:\"Ĩ\",itilde:\"ĩ\",Iukcy:\"І\",iukcy:\"і\",Iuml:\"Ï\",iuml:\"ï\",Jcirc:\"Ĵ\",jcirc:\"ĵ\",Jcy:\"Й\",jcy:\"й\",Jfr:\"𝔍\",jfr:\"𝔧\",jmath:\"ȷ\",Jopf:\"𝕁\",jopf:\"𝕛\",Jscr:\"𝒥\",jscr:\"𝒿\",Jsercy:\"Ј\",jsercy:\"ј\",Jukcy:\"Є\",jukcy:\"є\",Kappa:\"Κ\",kappa:\"κ\",kappav:\"ϰ\",Kcedil:\"Ķ\",kcedil:\"ķ\",Kcy:\"К\",kcy:\"к\",Kfr:\"𝔎\",kfr:\"𝔨\",kgreen:\"ĸ\",KHcy:\"Х\",khcy:\"х\",KJcy:\"Ќ\",kjcy:\"ќ\",Kopf:\"𝕂\",kopf:\"𝕜\",Kscr:\"𝒦\",kscr:\"𝓀\",lAarr:\"⇚\",Lacute:\"Ĺ\",lacute:\"ĺ\",laemptyv:\"⦴\",lagran:\"ℒ\",Lambda:\"Λ\",lambda:\"λ\",lang:\"⟨\",Lang:\"⟪\",langd:\"⦑\",langle:\"⟨\",lap:\"⪅\",Laplacetrf:\"ℒ\",laquo:\"«\",larrb:\"⇤\",larrbfs:\"⤟\",larr:\"←\",Larr:\"↞\",lArr:\"⇐\",larrfs:\"⤝\",larrhk:\"↩\",larrlp:\"↫\",larrpl:\"⤹\",larrsim:\"⥳\",larrtl:\"↢\",latail:\"⤙\",lAtail:\"⤛\",lat:\"⪫\",late:\"⪭\",lates:\"⪭︀\",lbarr:\"⤌\",lBarr:\"⤎\",lbbrk:\"❲\",lbrace:\"{\",lbrack:\"[\",lbrke:\"⦋\",lbrksld:\"⦏\",lbrkslu:\"⦍\",Lcaron:\"Ľ\",lcaron:\"ľ\",Lcedil:\"Ļ\",lcedil:\"ļ\",lceil:\"⌈\",lcub:\"{\",Lcy:\"Л\",lcy:\"л\",ldca:\"⤶\",ldquo:\"“\",ldquor:\"„\",ldrdhar:\"⥧\",ldrushar:\"⥋\",ldsh:\"↲\",le:\"≤\",lE:\"≦\",LeftAngleBracket:\"⟨\",LeftArrowBar:\"⇤\",leftarrow:\"←\",LeftArrow:\"←\",Leftarrow:\"⇐\",LeftArrowRightArrow:\"⇆\",leftarrowtail:\"↢\",LeftCeiling:\"⌈\",LeftDoubleBracket:\"⟦\",LeftDownTeeVector:\"⥡\",LeftDownVectorBar:\"⥙\",LeftDownVector:\"⇃\",LeftFloor:\"⌊\",leftharpoondown:\"↽\",leftharpoonup:\"↼\",leftleftarrows:\"⇇\",leftrightarrow:\"↔\",LeftRightArrow:\"↔\",Leftrightarrow:\"⇔\",leftrightarrows:\"⇆\",leftrightharpoons:\"⇋\",leftrightsquigarrow:\"↭\",LeftRightVector:\"⥎\",LeftTeeArrow:\"↤\",LeftTee:\"⊣\",LeftTeeVector:\"⥚\",leftthreetimes:\"⋋\",LeftTriangleBar:\"⧏\",LeftTriangle:\"⊲\",LeftTriangleEqual:\"⊴\",LeftUpDownVector:\"⥑\",LeftUpTeeVector:\"⥠\",LeftUpVectorBar:\"⥘\",LeftUpVector:\"↿\",LeftVectorBar:\"⥒\",LeftVector:\"↼\",lEg:\"⪋\",leg:\"⋚\",leq:\"≤\",leqq:\"≦\",leqslant:\"⩽\",lescc:\"⪨\",les:\"⩽\",lesdot:\"⩿\",lesdoto:\"⪁\",lesdotor:\"⪃\",lesg:\"⋚︀\",lesges:\"⪓\",lessapprox:\"⪅\",lessdot:\"⋖\",lesseqgtr:\"⋚\",lesseqqgtr:\"⪋\",LessEqualGreater:\"⋚\",LessFullEqual:\"≦\",LessGreater:\"≶\",lessgtr:\"≶\",LessLess:\"⪡\",lesssim:\"≲\",LessSlantEqual:\"⩽\",LessTilde:\"≲\",lfisht:\"⥼\",lfloor:\"⌊\",Lfr:\"𝔏\",lfr:\"𝔩\",lg:\"≶\",lgE:\"⪑\",lHar:\"⥢\",lhard:\"↽\",lharu:\"↼\",lharul:\"⥪\",lhblk:\"▄\",LJcy:\"Љ\",ljcy:\"љ\",llarr:\"⇇\",ll:\"≪\",Ll:\"⋘\",llcorner:\"⌞\",Lleftarrow:\"⇚\",llhard:\"⥫\",lltri:\"◺\",Lmidot:\"Ŀ\",lmidot:\"ŀ\",lmoustache:\"⎰\",lmoust:\"⎰\",lnap:\"⪉\",lnapprox:\"⪉\",lne:\"⪇\",lnE:\"≨\",lneq:\"⪇\",lneqq:\"≨\",lnsim:\"⋦\",loang:\"⟬\",loarr:\"⇽\",lobrk:\"⟦\",longleftarrow:\"⟵\",LongLeftArrow:\"⟵\",Longleftarrow:\"⟸\",longleftrightarrow:\"⟷\",LongLeftRightArrow:\"⟷\",Longleftrightarrow:\"⟺\",longmapsto:\"⟼\",longrightarrow:\"⟶\",LongRightArrow:\"⟶\",Longrightarrow:\"⟹\",looparrowleft:\"↫\",looparrowright:\"↬\",lopar:\"⦅\",Lopf:\"𝕃\",lopf:\"𝕝\",loplus:\"⨭\",lotimes:\"⨴\",lowast:\"∗\",lowbar:\"_\",LowerLeftArrow:\"↙\",LowerRightArrow:\"↘\",loz:\"◊\",lozenge:\"◊\",lozf:\"⧫\",lpar:\"(\",lparlt:\"⦓\",lrarr:\"⇆\",lrcorner:\"⌟\",lrhar:\"⇋\",lrhard:\"⥭\",lrm:\"\\u200e\",lrtri:\"⊿\",lsaquo:\"‹\",lscr:\"𝓁\",Lscr:\"ℒ\",lsh:\"↰\",Lsh:\"↰\",lsim:\"≲\",lsime:\"⪍\",lsimg:\"⪏\",lsqb:\"[\",lsquo:\"‘\",lsquor:\"‚\",Lstrok:\"Ł\",lstrok:\"ł\",ltcc:\"⪦\",ltcir:\"⩹\",lt:\"<\",LT:\"<\",Lt:\"≪\",ltdot:\"⋖\",lthree:\"⋋\",ltimes:\"⋉\",ltlarr:\"⥶\",ltquest:\"⩻\",ltri:\"◃\",ltrie:\"⊴\",ltrif:\"◂\",ltrPar:\"⦖\",lurdshar:\"⥊\",luruhar:\"⥦\",lvertneqq:\"≨︀\",lvnE:\"≨︀\",macr:\"¯\",male:\"♂\",malt:\"✠\",maltese:\"✠\",Map:\"⤅\",map:\"↦\",mapsto:\"↦\",mapstodown:\"↧\",mapstoleft:\"↤\",mapstoup:\"↥\",marker:\"▮\",mcomma:\"⨩\",Mcy:\"М\",mcy:\"м\",mdash:\"—\",mDDot:\"∺\",measuredangle:\"∡\",MediumSpace:\" \",Mellintrf:\"ℳ\",Mfr:\"𝔐\",mfr:\"𝔪\",mho:\"℧\",micro:\"µ\",midast:\"*\",midcir:\"⫰\",mid:\"∣\",middot:\"·\",minusb:\"⊟\",minus:\"−\",minusd:\"∸\",minusdu:\"⨪\",MinusPlus:\"∓\",mlcp:\"⫛\",mldr:\"…\",mnplus:\"∓\",models:\"⊧\",Mopf:\"𝕄\",mopf:\"𝕞\",mp:\"∓\",mscr:\"𝓂\",Mscr:\"ℳ\",mstpos:\"∾\",Mu:\"Μ\",mu:\"μ\",multimap:\"⊸\",mumap:\"⊸\",nabla:\"∇\",Nacute:\"Ń\",nacute:\"ń\",nang:\"∠⃒\",nap:\"≉\",napE:\"⩰̸\",napid:\"≋̸\",napos:\"ʼn\",napprox:\"≉\",natural:\"♮\",naturals:\"ℕ\",natur:\"♮\",nbsp:\" \",nbump:\"≎̸\",nbumpe:\"≏̸\",ncap:\"⩃\",Ncaron:\"Ň\",ncaron:\"ň\",Ncedil:\"Ņ\",ncedil:\"ņ\",ncong:\"≇\",ncongdot:\"⩭̸\",ncup:\"⩂\",Ncy:\"Н\",ncy:\"н\",ndash:\"–\",nearhk:\"⤤\",nearr:\"↗\",neArr:\"⇗\",nearrow:\"↗\",ne:\"≠\",nedot:\"≐̸\",NegativeMediumSpace:\"\",NegativeThickSpace:\"\",NegativeThinSpace:\"\",NegativeVeryThinSpace:\"\",nequiv:\"≢\",nesear:\"⤨\",nesim:\"≂̸\",NestedGreaterGreater:\"≫\",NestedLessLess:\"≪\",NewLine:\"\\u000a\",nexist:\"∄\",nexists:\"∄\",Nfr:\"𝔑\",nfr:\"𝔫\",ngE:\"≧̸\",nge:\"≱\",ngeq:\"≱\",ngeqq:\"≧̸\",ngeqslant:\"⩾̸\",nges:\"⩾̸\",nGg:\"⋙̸\",ngsim:\"≵\",nGt:\"≫⃒\",ngt:\"≯\",ngtr:\"≯\",nGtv:\"≫̸\",nharr:\"↮\",nhArr:\"⇎\",nhpar:\"⫲\",ni:\"∋\",nis:\"⋼\",nisd:\"⋺\",niv:\"∋\",NJcy:\"Њ\",njcy:\"њ\",nlarr:\"↚\",nlArr:\"⇍\",nldr:\"‥\",nlE:\"≦̸\",nle:\"≰\",nleftarrow:\"↚\",nLeftarrow:\"⇍\",nleftrightarrow:\"↮\",nLeftrightarrow:\"⇎\",nleq:\"≰\",nleqq:\"≦̸\",nleqslant:\"⩽̸\",nles:\"⩽̸\",nless:\"≮\",nLl:\"⋘̸\",nlsim:\"≴\",nLt:\"≪⃒\",nlt:\"≮\",nltri:\"⋪\",nltrie:\"⋬\",nLtv:\"≪̸\",nmid:\"∤\",NoBreak:\"\\u2060\",NonBreakingSpace:\" \",nopf:\"𝕟\",Nopf:\"ℕ\",Not:\"⫬\",not:\"¬\",NotCongruent:\"≢\",NotCupCap:\"≭\",NotDoubleVerticalBar:\"∦\",NotElement:\"∉\",NotEqual:\"≠\",NotEqualTilde:\"≂̸\",NotExists:\"∄\",NotGreater:\"≯\",NotGreaterEqual:\"≱\",NotGreaterFullEqual:\"≧̸\",NotGreaterGreater:\"≫̸\",NotGreaterLess:\"≹\",NotGreaterSlantEqual:\"⩾̸\",NotGreaterTilde:\"≵\",NotHumpDownHump:\"≎̸\",NotHumpEqual:\"≏̸\",notin:\"∉\",notindot:\"⋵̸\",notinE:\"⋹̸\",notinva:\"∉\",notinvb:\"⋷\",notinvc:\"⋶\",NotLeftTriangleBar:\"⧏̸\",NotLeftTriangle:\"⋪\",NotLeftTriangleEqual:\"⋬\",NotLess:\"≮\",NotLessEqual:\"≰\",NotLessGreater:\"≸\",NotLessLess:\"≪̸\",NotLessSlantEqual:\"⩽̸\",NotLessTilde:\"≴\",NotNestedGreaterGreater:\"⪢̸\",NotNestedLessLess:\"⪡̸\",notni:\"∌\",notniva:\"∌\",notnivb:\"⋾\",notnivc:\"⋽\",NotPrecedes:\"⊀\",NotPrecedesEqual:\"⪯̸\",NotPrecedesSlantEqual:\"⋠\",NotReverseElement:\"∌\",NotRightTriangleBar:\"⧐̸\",NotRightTriangle:\"⋫\",NotRightTriangleEqual:\"⋭\",NotSquareSubset:\"⊏̸\",NotSquareSubsetEqual:\"⋢\",NotSquareSuperset:\"⊐̸\",NotSquareSupersetEqual:\"⋣\",NotSubset:\"⊂⃒\",NotSubsetEqual:\"⊈\",NotSucceeds:\"⊁\",NotSucceedsEqual:\"⪰̸\",NotSucceedsSlantEqual:\"⋡\",NotSucceedsTilde:\"≿̸\",NotSuperset:\"⊃⃒\",NotSupersetEqual:\"⊉\",NotTilde:\"≁\",NotTildeEqual:\"≄\",NotTildeFullEqual:\"≇\",NotTildeTilde:\"≉\",NotVerticalBar:\"∤\",nparallel:\"∦\",npar:\"∦\",nparsl:\"⫽⃥\",npart:\"∂̸\",npolint:\"⨔\",npr:\"⊀\",nprcue:\"⋠\",nprec:\"⊀\",npreceq:\"⪯̸\",npre:\"⪯̸\",nrarrc:\"⤳̸\",nrarr:\"↛\",nrArr:\"⇏\",nrarrw:\"↝̸\",nrightarrow:\"↛\",nRightarrow:\"⇏\",nrtri:\"⋫\",nrtrie:\"⋭\",nsc:\"⊁\",nsccue:\"⋡\",nsce:\"⪰̸\",Nscr:\"𝒩\",nscr:\"𝓃\",nshortmid:\"∤\",nshortparallel:\"∦\",nsim:\"≁\",nsime:\"≄\",nsimeq:\"≄\",nsmid:\"∤\",nspar:\"∦\",nsqsube:\"⋢\",nsqsupe:\"⋣\",nsub:\"⊄\",nsubE:\"⫅̸\",nsube:\"⊈\",nsubset:\"⊂⃒\",nsubseteq:\"⊈\",nsubseteqq:\"⫅̸\",nsucc:\"⊁\",nsucceq:\"⪰̸\",nsup:\"⊅\",nsupE:\"⫆̸\",nsupe:\"⊉\",nsupset:\"⊃⃒\",nsupseteq:\"⊉\",nsupseteqq:\"⫆̸\",ntgl:\"≹\",Ntilde:\"Ñ\",ntilde:\"ñ\",ntlg:\"≸\",ntriangleleft:\"⋪\",ntrianglelefteq:\"⋬\",ntriangleright:\"⋫\",ntrianglerighteq:\"⋭\",Nu:\"Ν\",nu:\"ν\",num:\"#\",numero:\"№\",numsp:\" \",nvap:\"≍⃒\",nvdash:\"⊬\",nvDash:\"⊭\",nVdash:\"⊮\",nVDash:\"⊯\",nvge:\"≥⃒\",nvgt:\">⃒\",nvHarr:\"⤄\",nvinfin:\"⧞\",nvlArr:\"⤂\",nvle:\"≤⃒\",nvlt:\"<⃒\",nvltrie:\"⊴⃒\",nvrArr:\"⤃\",nvrtrie:\"⊵⃒\",nvsim:\"∼⃒\",nwarhk:\"⤣\",nwarr:\"↖\",nwArr:\"⇖\",nwarrow:\"↖\",nwnear:\"⤧\",Oacute:\"Ó\",oacute:\"ó\",oast:\"⊛\",Ocirc:\"Ô\",ocirc:\"ô\",ocir:\"⊚\",Ocy:\"О\",ocy:\"о\",odash:\"⊝\",Odblac:\"Ő\",odblac:\"ő\",odiv:\"⨸\",odot:\"⊙\",odsold:\"⦼\",OElig:\"Œ\",oelig:\"œ\",ofcir:\"⦿\",Ofr:\"𝔒\",ofr:\"𝔬\",ogon:\"˛\",Ograve:\"Ò\",ograve:\"ò\",ogt:\"⧁\",ohbar:\"⦵\",ohm:\"Ω\",oint:\"∮\",olarr:\"↺\",olcir:\"⦾\",olcross:\"⦻\",oline:\"‾\",olt:\"⧀\",Omacr:\"Ō\",omacr:\"ō\",Omega:\"Ω\",omega:\"ω\",Omicron:\"Ο\",omicron:\"ο\",omid:\"⦶\",ominus:\"⊖\",Oopf:\"𝕆\",oopf:\"𝕠\",opar:\"⦷\",OpenCurlyDoubleQuote:\"“\",OpenCurlyQuote:\"‘\",operp:\"⦹\",oplus:\"⊕\",orarr:\"↻\",Or:\"⩔\",or:\"∨\",ord:\"⩝\",order:\"ℴ\",orderof:\"ℴ\",ordf:\"ª\",ordm:\"º\",origof:\"⊶\",oror:\"⩖\",orslope:\"⩗\",orv:\"⩛\",oS:\"Ⓢ\",Oscr:\"𝒪\",oscr:\"ℴ\",Oslash:\"Ø\",oslash:\"ø\",osol:\"⊘\",Otilde:\"Õ\",otilde:\"õ\",otimesas:\"⨶\",Otimes:\"⨷\",otimes:\"⊗\",Ouml:\"Ö\",ouml:\"ö\",ovbar:\"⌽\",OverBar:\"‾\",OverBrace:\"⏞\",OverBracket:\"⎴\",OverParenthesis:\"⏜\",para:\"¶\",parallel:\"∥\",par:\"∥\",parsim:\"⫳\",parsl:\"⫽\",part:\"∂\",PartialD:\"∂\",Pcy:\"П\",pcy:\"п\",percnt:\"%\",period:\".\",permil:\"‰\",perp:\"⊥\",pertenk:\"‱\",Pfr:\"𝔓\",pfr:\"𝔭\",Phi:\"Φ\",phi:\"φ\",phiv:\"ϕ\",phmmat:\"ℳ\",phone:\"☎\",Pi:\"Π\",pi:\"π\",pitchfork:\"⋔\",piv:\"ϖ\",planck:\"ℏ\",planckh:\"ℎ\",plankv:\"ℏ\",plusacir:\"⨣\",plusb:\"⊞\",pluscir:\"⨢\",plus:\"+\",plusdo:\"∔\",plusdu:\"⨥\",pluse:\"⩲\",PlusMinus:\"±\",plusmn:\"±\",plussim:\"⨦\",plustwo:\"⨧\",pm:\"±\",Poincareplane:\"ℌ\",pointint:\"⨕\",popf:\"𝕡\",Popf:\"ℙ\",pound:\"£\",prap:\"⪷\",Pr:\"⪻\",pr:\"≺\",prcue:\"≼\",precapprox:\"⪷\",prec:\"≺\",preccurlyeq:\"≼\",Precedes:\"≺\",PrecedesEqual:\"⪯\",PrecedesSlantEqual:\"≼\",PrecedesTilde:\"≾\",preceq:\"⪯\",precnapprox:\"⪹\",precneqq:\"⪵\",precnsim:\"⋨\",pre:\"⪯\",prE:\"⪳\",precsim:\"≾\",prime:\"′\",Prime:\"″\",primes:\"ℙ\",prnap:\"⪹\",prnE:\"⪵\",prnsim:\"⋨\",prod:\"∏\",Product:\"∏\",profalar:\"⌮\",profline:\"⌒\",profsurf:\"⌓\",prop:\"∝\",Proportional:\"∝\",Proportion:\"∷\",propto:\"∝\",prsim:\"≾\",prurel:\"⊰\",Pscr:\"𝒫\",pscr:\"𝓅\",Psi:\"Ψ\",psi:\"ψ\",puncsp:\" \",Qfr:\"𝔔\",qfr:\"𝔮\",qint:\"⨌\",qopf:\"𝕢\",Qopf:\"ℚ\",qprime:\"⁗\",Qscr:\"𝒬\",qscr:\"𝓆\",quaternions:\"ℍ\",quatint:\"⨖\",quest:\"?\",questeq:\"≟\",quot:\"\\\"\",QUOT:\"\\\"\",rAarr:\"⇛\",race:\"∽̱\",Racute:\"Ŕ\",racute:\"ŕ\",radic:\"√\",raemptyv:\"⦳\",rang:\"⟩\",Rang:\"⟫\",rangd:\"⦒\",range:\"⦥\",rangle:\"⟩\",raquo:\"»\",rarrap:\"⥵\",rarrb:\"⇥\",rarrbfs:\"⤠\",rarrc:\"⤳\",rarr:\"→\",Rarr:\"↠\",rArr:\"⇒\",rarrfs:\"⤞\",rarrhk:\"↪\",rarrlp:\"↬\",rarrpl:\"⥅\",rarrsim:\"⥴\",Rarrtl:\"⤖\",rarrtl:\"↣\",rarrw:\"↝\",ratail:\"⤚\",rAtail:\"⤜\",ratio:\"∶\",rationals:\"ℚ\",rbarr:\"⤍\",rBarr:\"⤏\",RBarr:\"⤐\",rbbrk:\"❳\",rbrace:\"}\",rbrack:\"]\",rbrke:\"⦌\",rbrksld:\"⦎\",rbrkslu:\"⦐\",Rcaron:\"Ř\",rcaron:\"ř\",Rcedil:\"Ŗ\",rcedil:\"ŗ\",rceil:\"⌉\",rcub:\"}\",Rcy:\"Р\",rcy:\"р\",rdca:\"⤷\",rdldhar:\"⥩\",rdquo:\"”\",rdquor:\"”\",rdsh:\"↳\",real:\"ℜ\",realine:\"ℛ\",realpart:\"ℜ\",reals:\"ℝ\",Re:\"ℜ\",rect:\"▭\",reg:\"®\",REG:\"®\",ReverseElement:\"∋\",ReverseEquilibrium:\"⇋\",ReverseUpEquilibrium:\"⥯\",rfisht:\"⥽\",rfloor:\"⌋\",rfr:\"𝔯\",Rfr:\"ℜ\",rHar:\"⥤\",rhard:\"⇁\",rharu:\"⇀\",rharul:\"⥬\",Rho:\"Ρ\",rho:\"ρ\",rhov:\"ϱ\",RightAngleBracket:\"⟩\",RightArrowBar:\"⇥\",rightarrow:\"→\",RightArrow:\"→\",Rightarrow:\"⇒\",RightArrowLeftArrow:\"⇄\",rightarrowtail:\"↣\",RightCeiling:\"⌉\",RightDoubleBracket:\"⟧\",RightDownTeeVector:\"⥝\",RightDownVectorBar:\"⥕\",RightDownVector:\"⇂\",RightFloor:\"⌋\",rightharpoondown:\"⇁\",rightharpoonup:\"⇀\",rightleftarrows:\"⇄\",rightleftharpoons:\"⇌\",rightrightarrows:\"⇉\",rightsquigarrow:\"↝\",RightTeeArrow:\"↦\",RightTee:\"⊢\",RightTeeVector:\"⥛\",rightthreetimes:\"⋌\",RightTriangleBar:\"⧐\",RightTriangle:\"⊳\",RightTriangleEqual:\"⊵\",RightUpDownVector:\"⥏\",RightUpTeeVector:\"⥜\",RightUpVectorBar:\"⥔\",RightUpVector:\"↾\",RightVectorBar:\"⥓\",RightVector:\"⇀\",ring:\"˚\",risingdotseq:\"≓\",rlarr:\"⇄\",rlhar:\"⇌\",rlm:\"\\u200f\",rmoustache:\"⎱\",rmoust:\"⎱\",rnmid:\"⫮\",roang:\"⟭\",roarr:\"⇾\",robrk:\"⟧\",ropar:\"⦆\",ropf:\"𝕣\",Ropf:\"ℝ\",roplus:\"⨮\",rotimes:\"⨵\",RoundImplies:\"⥰\",rpar:\")\",rpargt:\"⦔\",rppolint:\"⨒\",rrarr:\"⇉\",Rrightarrow:\"⇛\",rsaquo:\"›\",rscr:\"𝓇\",Rscr:\"ℛ\",rsh:\"↱\",Rsh:\"↱\",rsqb:\"]\",rsquo:\"’\",rsquor:\"’\",rthree:\"⋌\",rtimes:\"⋊\",rtri:\"▹\",rtrie:\"⊵\",rtrif:\"▸\",rtriltri:\"⧎\",RuleDelayed:\"⧴\",ruluhar:\"⥨\",rx:\"℞\",Sacute:\"Ś\",sacute:\"ś\",sbquo:\"‚\",scap:\"⪸\",Scaron:\"Š\",scaron:\"š\",Sc:\"⪼\",sc:\"≻\",sccue:\"≽\",sce:\"⪰\",scE:\"⪴\",Scedil:\"Ş\",scedil:\"ş\",Scirc:\"Ŝ\",scirc:\"ŝ\",scnap:\"⪺\",scnE:\"⪶\",scnsim:\"⋩\",scpolint:\"⨓\",scsim:\"≿\",Scy:\"С\",scy:\"с\",sdotb:\"⊡\",sdot:\"⋅\",sdote:\"⩦\",searhk:\"⤥\",searr:\"↘\",seArr:\"⇘\",searrow:\"↘\",sect:\"§\",semi:\";\",seswar:\"⤩\",setminus:\"∖\",setmn:\"∖\",sext:\"✶\",Sfr:\"𝔖\",sfr:\"𝔰\",sfrown:\"⌢\",sharp:\"♯\",SHCHcy:\"Щ\",shchcy:\"щ\",SHcy:\"Ш\",shcy:\"ш\",ShortDownArrow:\"↓\",ShortLeftArrow:\"←\",shortmid:\"∣\",shortparallel:\"∥\",ShortRightArrow:\"→\",ShortUpArrow:\"↑\",shy:\"\\u00ad\",Sigma:\"Σ\",sigma:\"σ\",sigmaf:\"ς\",sigmav:\"ς\",sim:\"∼\",simdot:\"⩪\",sime:\"≃\",simeq:\"≃\",simg:\"⪞\",simgE:\"⪠\",siml:\"⪝\",simlE:\"⪟\",simne:\"≆\",simplus:\"⨤\",simrarr:\"⥲\",slarr:\"←\",SmallCircle:\"∘\",smallsetminus:\"∖\",smashp:\"⨳\",smeparsl:\"⧤\",smid:\"∣\",smile:\"⌣\",smt:\"⪪\",smte:\"⪬\",smtes:\"⪬︀\",SOFTcy:\"Ь\",softcy:\"ь\",solbar:\"⌿\",solb:\"⧄\",sol:\"/\",Sopf:\"𝕊\",sopf:\"𝕤\",spades:\"♠\",spadesuit:\"♠\",spar:\"∥\",sqcap:\"⊓\",sqcaps:\"⊓︀\",sqcup:\"⊔\",sqcups:\"⊔︀\",Sqrt:\"√\",sqsub:\"⊏\",sqsube:\"⊑\",sqsubset:\"⊏\",sqsubseteq:\"⊑\",sqsup:\"⊐\",sqsupe:\"⊒\",sqsupset:\"⊐\",sqsupseteq:\"⊒\",square:\"□\",Square:\"□\",SquareIntersection:\"⊓\",SquareSubset:\"⊏\",SquareSubsetEqual:\"⊑\",SquareSuperset:\"⊐\",SquareSupersetEqual:\"⊒\",SquareUnion:\"⊔\",squarf:\"▪\",squ:\"□\",squf:\"▪\",srarr:\"→\",Sscr:\"𝒮\",sscr:\"𝓈\",ssetmn:\"∖\",ssmile:\"⌣\",sstarf:\"⋆\",Star:\"⋆\",star:\"☆\",starf:\"★\",straightepsilon:\"ϵ\",straightphi:\"ϕ\",strns:\"¯\",sub:\"⊂\",Sub:\"⋐\",subdot:\"⪽\",subE:\"⫅\",sube:\"⊆\",subedot:\"⫃\",submult:\"⫁\",subnE:\"⫋\",subne:\"⊊\",subplus:\"⪿\",subrarr:\"⥹\",subset:\"⊂\",Subset:\"⋐\",subseteq:\"⊆\",subseteqq:\"⫅\",SubsetEqual:\"⊆\",subsetneq:\"⊊\",subsetneqq:\"⫋\",subsim:\"⫇\",subsub:\"⫕\",subsup:\"⫓\",succapprox:\"⪸\",succ:\"≻\",succcurlyeq:\"≽\",Succeeds:\"≻\",SucceedsEqual:\"⪰\",SucceedsSlantEqual:\"≽\",SucceedsTilde:\"≿\",succeq:\"⪰\",succnapprox:\"⪺\",succneqq:\"⪶\",succnsim:\"⋩\",succsim:\"≿\",SuchThat:\"∋\",sum:\"∑\",Sum:\"∑\",sung:\"♪\",sup1:\"¹\",sup2:\"²\",sup3:\"³\",sup:\"⊃\",Sup:\"⋑\",supdot:\"⪾\",supdsub:\"⫘\",supE:\"⫆\",supe:\"⊇\",supedot:\"⫄\",Superset:\"⊃\",SupersetEqual:\"⊇\",suphsol:\"⟉\",suphsub:\"⫗\",suplarr:\"⥻\",supmult:\"⫂\",supnE:\"⫌\",supne:\"⊋\",supplus:\"⫀\",supset:\"⊃\",Supset:\"⋑\",supseteq:\"⊇\",supseteqq:\"⫆\",supsetneq:\"⊋\",supsetneqq:\"⫌\",supsim:\"⫈\",supsub:\"⫔\",supsup:\"⫖\",swarhk:\"⤦\",swarr:\"↙\",swArr:\"⇙\",swarrow:\"↙\",swnwar:\"⤪\",szlig:\"ß\",Tab:\"\\u0009\",target:\"⌖\",Tau:\"Τ\",tau:\"τ\",tbrk:\"⎴\",Tcaron:\"Ť\",tcaron:\"ť\",Tcedil:\"Ţ\",tcedil:\"ţ\",Tcy:\"Т\",tcy:\"т\",tdot:\"⃛\",telrec:\"⌕\",Tfr:\"𝔗\",tfr:\"𝔱\",there4:\"∴\",therefore:\"∴\",Therefore:\"∴\",Theta:\"Θ\",theta:\"θ\",thetasym:\"ϑ\",thetav:\"ϑ\",thickapprox:\"≈\",thicksim:\"∼\",ThickSpace:\" \",ThinSpace:\" \",thinsp:\" \",thkap:\"≈\",thksim:\"∼\",THORN:\"Þ\",thorn:\"þ\",tilde:\"˜\",Tilde:\"∼\",TildeEqual:\"≃\",TildeFullEqual:\"≅\",TildeTilde:\"≈\",timesbar:\"⨱\",timesb:\"⊠\",times:\"×\",timesd:\"⨰\",tint:\"∭\",toea:\"⤨\",topbot:\"⌶\",topcir:\"⫱\",top:\"⊤\",Topf:\"𝕋\",topf:\"𝕥\",topfork:\"⫚\",tosa:\"⤩\",tprime:\"‴\",trade:\"™\",TRADE:\"™\",triangle:\"▵\",triangledown:\"▿\",triangleleft:\"◃\",trianglelefteq:\"⊴\",triangleq:\"≜\",triangleright:\"▹\",trianglerighteq:\"⊵\",tridot:\"◬\",trie:\"≜\",triminus:\"⨺\",TripleDot:\"⃛\",triplus:\"⨹\",trisb:\"⧍\",tritime:\"⨻\",trpezium:\"⏢\",Tscr:\"𝒯\",tscr:\"𝓉\",TScy:\"Ц\",tscy:\"ц\",TSHcy:\"Ћ\",tshcy:\"ћ\",Tstrok:\"Ŧ\",tstrok:\"ŧ\",twixt:\"≬\",twoheadleftarrow:\"↞\",twoheadrightarrow:\"↠\",Uacute:\"Ú\",uacute:\"ú\",uarr:\"↑\",Uarr:\"↟\",uArr:\"⇑\",Uarrocir:\"⥉\",Ubrcy:\"Ў\",ubrcy:\"ў\",Ubreve:\"Ŭ\",ubreve:\"ŭ\",Ucirc:\"Û\",ucirc:\"û\",Ucy:\"У\",ucy:\"у\",udarr:\"⇅\",Udblac:\"Ű\",udblac:\"ű\",udhar:\"⥮\",ufisht:\"⥾\",Ufr:\"𝔘\",ufr:\"𝔲\",Ugrave:\"Ù\",ugrave:\"ù\",uHar:\"⥣\",uharl:\"↿\",uharr:\"↾\",uhblk:\"▀\",ulcorn:\"⌜\",ulcorner:\"⌜\",ulcrop:\"⌏\",ultri:\"◸\",Umacr:\"Ū\",umacr:\"ū\",uml:\"¨\",UnderBar:\"_\",UnderBrace:\"⏟\",UnderBracket:\"⎵\",UnderParenthesis:\"⏝\",Union:\"⋃\",UnionPlus:\"⊎\",Uogon:\"Ų\",uogon:\"ų\",Uopf:\"𝕌\",uopf:\"𝕦\",UpArrowBar:\"⤒\",uparrow:\"↑\",UpArrow:\"↑\",Uparrow:\"⇑\",UpArrowDownArrow:\"⇅\",updownarrow:\"↕\",UpDownArrow:\"↕\",Updownarrow:\"⇕\",UpEquilibrium:\"⥮\",upharpoonleft:\"↿\",upharpoonright:\"↾\",uplus:\"⊎\",UpperLeftArrow:\"↖\",UpperRightArrow:\"↗\",upsi:\"υ\",Upsi:\"ϒ\",upsih:\"ϒ\",Upsilon:\"Υ\",upsilon:\"υ\",UpTeeArrow:\"↥\",UpTee:\"⊥\",upuparrows:\"⇈\",urcorn:\"⌝\",urcorner:\"⌝\",urcrop:\"⌎\",Uring:\"Ů\",uring:\"ů\",urtri:\"◹\",Uscr:\"𝒰\",uscr:\"𝓊\",utdot:\"⋰\",Utilde:\"Ũ\",utilde:\"ũ\",utri:\"▵\",utrif:\"▴\",uuarr:\"⇈\",Uuml:\"Ü\",uuml:\"ü\",uwangle:\"⦧\",vangrt:\"⦜\",varepsilon:\"ϵ\",varkappa:\"ϰ\",varnothing:\"∅\",varphi:\"ϕ\",varpi:\"ϖ\",varpropto:\"∝\",varr:\"↕\",vArr:\"⇕\",varrho:\"ϱ\",varsigma:\"ς\",varsubsetneq:\"⊊︀\",varsubsetneqq:\"⫋︀\",varsupsetneq:\"⊋︀\",varsupsetneqq:\"⫌︀\",vartheta:\"ϑ\",vartriangleleft:\"⊲\",vartriangleright:\"⊳\",vBar:\"⫨\",Vbar:\"⫫\",vBarv:\"⫩\",Vcy:\"В\",vcy:\"в\",vdash:\"⊢\",vDash:\"⊨\",Vdash:\"⊩\",VDash:\"⊫\",Vdashl:\"⫦\",veebar:\"⊻\",vee:\"∨\",Vee:\"⋁\",veeeq:\"≚\",vellip:\"⋮\",verbar:\"|\",Verbar:\"‖\",vert:\"|\",Vert:\"‖\",VerticalBar:\"∣\",VerticalLine:\"|\",VerticalSeparator:\"❘\",VerticalTilde:\"≀\",VeryThinSpace:\" \",Vfr:\"𝔙\",vfr:\"𝔳\",vltri:\"⊲\",vnsub:\"⊂⃒\",vnsup:\"⊃⃒\",Vopf:\"𝕍\",vopf:\"𝕧\",vprop:\"∝\",vrtri:\"⊳\",Vscr:\"𝒱\",vscr:\"𝓋\",vsubnE:\"⫋︀\",vsubne:\"⊊︀\",vsupnE:\"⫌︀\",vsupne:\"⊋︀\",Vvdash:\"⊪\",vzigzag:\"⦚\",Wcirc:\"Ŵ\",wcirc:\"ŵ\",wedbar:\"⩟\",wedge:\"∧\",Wedge:\"⋀\",wedgeq:\"≙\",weierp:\"℘\",Wfr:\"𝔚\",wfr:\"𝔴\",Wopf:\"𝕎\",wopf:\"𝕨\",wp:\"℘\",wr:\"≀\",wreath:\"≀\",Wscr:\"𝒲\",wscr:\"𝓌\",xcap:\"⋂\",xcirc:\"◯\",xcup:\"⋃\",xdtri:\"▽\",Xfr:\"𝔛\",xfr:\"𝔵\",xharr:\"⟷\",xhArr:\"⟺\",Xi:\"Ξ\",xi:\"ξ\",xlarr:\"⟵\",xlArr:\"⟸\",xmap:\"⟼\",xnis:\"⋻\",xodot:\"⨀\",Xopf:\"𝕏\",xopf:\"𝕩\",xoplus:\"⨁\",xotime:\"⨂\",xrarr:\"⟶\",xrArr:\"⟹\",Xscr:\"𝒳\",xscr:\"𝓍\",xsqcup:\"⨆\",xuplus:\"⨄\",xutri:\"△\",xvee:\"⋁\",xwedge:\"⋀\",Yacute:\"Ý\",yacute:\"ý\",YAcy:\"Я\",yacy:\"я\",Ycirc:\"Ŷ\",ycirc:\"ŷ\",Ycy:\"Ы\",ycy:\"ы\",yen:\"¥\",Yfr:\"𝔜\",yfr:\"𝔶\",YIcy:\"Ї\",yicy:\"ї\",Yopf:\"𝕐\",yopf:\"𝕪\",Yscr:\"𝒴\",yscr:\"𝓎\",YUcy:\"Ю\",yucy:\"ю\",yuml:\"ÿ\",Yuml:\"Ÿ\",Zacute:\"Ź\",zacute:\"ź\",Zcaron:\"Ž\",zcaron:\"ž\",Zcy:\"З\",zcy:\"з\",Zdot:\"Ż\",zdot:\"ż\",zeetrf:\"ℨ\",ZeroWidthSpace:\"\",Zeta:\"Ζ\",zeta:\"ζ\",zfr:\"𝔷\",Zfr:\"ℨ\",ZHcy:\"Ж\",zhcy:\"ж\",zigrarr:\"⇝\",zopf:\"𝕫\",Zopf:\"ℤ\",Zscr:\"𝒵\",zscr:\"𝓏\",zwj:\"\\u200d\",zwnj:\"\\u200c\"\n};\n","const WSP = /[\\t\\n\\f ]/;\nconst ALPHA = /[A-Za-z]/;\nconst CRLF = /\\r\\n?/g;\n\nexport function isSpace(char: string): boolean {\n return WSP.test(char);\n}\n\nexport function isAlpha(char: string): boolean {\n return ALPHA.test(char);\n}\n\nexport function preprocessInput(input: string): string {\n return input.replace(CRLF, '\\n');\n}\n","import { preprocessInput, isAlpha, isSpace } from './utils';\nimport { EntityParser, TokenizerDelegate, TokenizerState } from './types';\n\nexport default class EventedTokenizer {\n public state: TokenizerState = TokenizerState.beforeData;\n\n public line = -1;\n public column = -1;\n\n private input = '';\n private index = -1;\n\n private tagNameBuffer = '';\n\n constructor(\n private delegate: TokenizerDelegate,\n private entityParser: EntityParser\n ) {\n this.reset();\n }\n\n reset() {\n this.transitionTo(TokenizerState.beforeData);\n this.input = '';\n\n this.index = 0;\n this.line = 1;\n this.column = 0;\n\n this.delegate.reset();\n }\n\n transitionTo(state: TokenizerState) {\n this.state = state;\n }\n\n tokenize(input: string) {\n this.reset();\n this.tokenizePart(input);\n this.tokenizeEOF();\n }\n\n tokenizePart(input: string) {\n this.input += preprocessInput(input);\n\n while (this.index < this.input.length) {\n let handler = this.states[this.state];\n if (handler !== undefined) {\n handler.call(this);\n } else {\n throw new Error(`unhandled state ${this.state}`);\n }\n }\n }\n\n tokenizeEOF() {\n this.flushData();\n }\n\n flushData() {\n if (this.state === 'data') {\n this.delegate.finishData();\n this.transitionTo(TokenizerState.beforeData);\n }\n }\n\n peek() {\n return this.input.charAt(this.index);\n }\n\n consume() {\n let char = this.peek();\n\n this.index++;\n\n if (char === '\\n') {\n this.line++;\n this.column = 0;\n } else {\n this.column++;\n }\n\n return char;\n }\n\n consumeCharRef() {\n let endIndex = this.input.indexOf(';', this.index);\n if (endIndex === -1) {\n return;\n }\n let entity = this.input.slice(this.index, endIndex);\n let chars = this.entityParser.parse(entity);\n if (chars) {\n let count = entity.length;\n // consume the entity chars\n while (count) {\n this.consume();\n count--;\n }\n // consume the `;`\n this.consume();\n\n return chars;\n }\n }\n\n markTagStart() {\n this.delegate.tagOpen();\n }\n\n private appendToTagName(char: string) : void {\n this.tagNameBuffer += char;\n this.delegate.appendToTagName(char);\n }\n\n states: { [k in TokenizerState]?: (this: EventedTokenizer) => void } = {\n beforeData() {\n let char = this.peek();\n\n if (char === '<') {\n this.transitionTo(TokenizerState.tagOpen);\n this.markTagStart();\n this.consume();\n } else {\n if (char === '\\n') {\n let tag = this.tagNameBuffer.toLowerCase();\n if (tag === 'pre' || tag === 'textarea') {\n this.consume();\n }\n }\n this.transitionTo(TokenizerState.data);\n this.delegate.beginData();\n }\n },\n\n data() {\n let char = this.peek();\n\n if (char === '<') {\n this.delegate.finishData();\n this.transitionTo(TokenizerState.tagOpen);\n this.markTagStart();\n this.consume();\n } else if (char === '&') {\n this.consume();\n this.delegate.appendToData(this.consumeCharRef() || '&');\n } else {\n this.consume();\n this.delegate.appendToData(char);\n }\n },\n\n tagOpen() {\n let char = this.consume();\n\n if (char === '!') {\n this.transitionTo(TokenizerState.markupDeclarationOpen);\n } else if (char === '/') {\n this.transitionTo(TokenizerState.endTagOpen);\n } else if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(TokenizerState.tagName);\n this.tagNameBuffer = '';\n this.delegate.beginStartTag();\n this.appendToTagName(char);\n }\n },\n\n markupDeclarationOpen() {\n let char = this.consume();\n\n if (char === '-' && this.input.charAt(this.index) === '-') {\n this.consume();\n this.transitionTo(TokenizerState.commentStart);\n this.delegate.beginComment();\n }\n },\n\n commentStart() {\n let char = this.consume();\n\n if (char === '-') {\n this.transitionTo(TokenizerState.commentStartDash);\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.delegate.appendToCommentData(char);\n this.transitionTo(TokenizerState.comment);\n }\n },\n\n commentStartDash() {\n let char = this.consume();\n\n if (char === '-') {\n this.transitionTo(TokenizerState.commentEnd);\n } else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.delegate.appendToCommentData('-');\n this.transitionTo(TokenizerState.comment);\n }\n },\n\n comment() {\n let char = this.consume();\n\n if (char === '-') {\n this.transitionTo(TokenizerState.commentEndDash);\n } else {\n this.delegate.appendToCommentData(char);\n }\n },\n\n commentEndDash() {\n let char = this.consume();\n\n if (char === '-') {\n this.transitionTo(TokenizerState.commentEnd);\n } else {\n this.delegate.appendToCommentData('-' + char);\n this.transitionTo(TokenizerState.comment);\n }\n },\n\n commentEnd() {\n let char = this.consume();\n\n if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.delegate.appendToCommentData('--' + char);\n this.transitionTo(TokenizerState.comment);\n }\n },\n\n tagName() {\n let char = this.consume();\n\n if (isSpace(char)) {\n this.transitionTo(TokenizerState.beforeAttributeName);\n } else if (char === '/') {\n this.transitionTo(TokenizerState.selfClosingStartTag);\n } else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.appendToTagName(char);\n }\n },\n\n beforeAttributeName() {\n let char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.transitionTo(TokenizerState.selfClosingStartTag);\n this.consume();\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else if (char === '=') {\n this.delegate.reportSyntaxError(\n 'attribute name cannot start with equals sign'\n );\n this.transitionTo(TokenizerState.attributeName);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.transitionTo(TokenizerState.attributeName);\n this.delegate.beginAttribute();\n }\n },\n\n attributeName() {\n let char = this.peek();\n\n if (isSpace(char)) {\n this.transitionTo(TokenizerState.afterAttributeName);\n this.consume();\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(TokenizerState.selfClosingStartTag);\n } else if (char === '=') {\n this.transitionTo(TokenizerState.beforeAttributeValue);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else if (char === '\"' || char === \"'\" || char === '<') {\n this.delegate.reportSyntaxError(\n char + ' is not a valid character within attribute names'\n );\n this.consume();\n this.delegate.appendToAttributeName(char);\n } else {\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n\n afterAttributeName() {\n let char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n return;\n } else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(TokenizerState.selfClosingStartTag);\n } else if (char === '=') {\n this.consume();\n this.transitionTo(TokenizerState.beforeAttributeValue);\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.transitionTo(TokenizerState.attributeName);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n\n beforeAttributeValue() {\n let char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n } else if (char === '\"') {\n this.transitionTo(TokenizerState.attributeValueDoubleQuoted);\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === \"'\") {\n this.transitionTo(TokenizerState.attributeValueSingleQuoted);\n this.delegate.beginAttributeValue(true);\n this.consume();\n } else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.transitionTo(TokenizerState.attributeValueUnquoted);\n this.delegate.beginAttributeValue(false);\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n\n attributeValueDoubleQuoted() {\n let char = this.consume();\n\n if (char === '\"') {\n this.delegate.finishAttributeValue();\n this.transitionTo(TokenizerState.afterAttributeValueQuoted);\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n\n attributeValueSingleQuoted() {\n let char = this.consume();\n\n if (char === \"'\") {\n this.delegate.finishAttributeValue();\n this.transitionTo(TokenizerState.afterAttributeValueQuoted);\n } else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n\n attributeValueUnquoted() {\n let char = this.peek();\n\n if (isSpace(char)) {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(TokenizerState.beforeAttributeName);\n } else if (char === '/') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(TokenizerState.selfClosingStartTag);\n } else if (char === '&') {\n this.consume();\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n } else if (char === '>') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n\n afterAttributeValueQuoted() {\n let char = this.peek();\n\n if (isSpace(char)) {\n this.consume();\n this.transitionTo(TokenizerState.beforeAttributeName);\n } else if (char === '/') {\n this.consume();\n this.transitionTo(TokenizerState.selfClosingStartTag);\n } else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.transitionTo(TokenizerState.beforeAttributeName);\n }\n },\n\n selfClosingStartTag() {\n let char = this.peek();\n\n if (char === '>') {\n this.consume();\n this.delegate.markTagAsSelfClosing();\n this.delegate.finishTag();\n this.transitionTo(TokenizerState.beforeData);\n } else {\n this.transitionTo(TokenizerState.beforeAttributeName);\n }\n },\n\n endTagOpen() {\n let char = this.consume();\n\n if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(TokenizerState.tagName);\n this.tagNameBuffer = '';\n this.delegate.beginEndTag();\n this.appendToTagName(char);\n }\n }\n };\n}\n","import EventedTokenizer from './evented-tokenizer';\nimport {\n Attribute,\n EntityParser,\n Token,\n TokenizerDelegate,\n TokenMap,\n TokenType,\n TokenizerOptions\n} from './types';\n\nexport default class Tokenizer implements TokenizerDelegate {\n private token: Token | null = null;\n private startLine = 1;\n private startColumn = 0;\n private tokenizer: EventedTokenizer;\n private tokens: Token[] = [];\n private _currentAttribute?: Attribute;\n\n constructor(\n entityParser: EntityParser,\n private options: TokenizerOptions = {}\n ) {\n this.tokenizer = new EventedTokenizer(this, entityParser);\n this._currentAttribute = undefined;\n }\n\n tokenize(input: string) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n }\n\n tokenizePart(input: string) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n }\n\n tokenizeEOF() {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n }\n\n reset() {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n }\n\n current<T extends TokenType, U extends TokenType>(\n type1: T,\n type2: U\n ): TokenMap[T] | TokenMap[U];\n current<T extends TokenType>(type: T): TokenMap[T];\n current(): Token;\n current(): Token {\n const token = this.token;\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n if (arguments.length === 0) {\n return token;\n }\n for (let i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n throw new Error(`token type was unexpectedly ${token.type}`);\n }\n\n push(token: Token) {\n this.token = token;\n this.tokens.push(token);\n }\n\n currentAttribute() {\n return this._currentAttribute;\n }\n\n addLocInfo() {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n }\n\n // Data\n\n beginData() {\n this.push({\n type: TokenType.Chars,\n chars: ''\n });\n }\n\n appendToData(char: string) {\n this.current(TokenType.Chars).chars += char;\n }\n\n finishData() {\n this.addLocInfo();\n }\n\n // Comment\n\n beginComment() {\n this.push({\n type: TokenType.Comment,\n chars: ''\n });\n }\n\n appendToCommentData(char: string) {\n this.current(TokenType.Comment).chars += char;\n }\n\n finishComment() {\n this.addLocInfo();\n }\n\n // Tags - basic\n\n tagOpen() {}\n\n beginStartTag() {\n this.push({\n type: TokenType.StartTag,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n }\n\n beginEndTag() {\n this.push({\n type: TokenType.EndTag,\n tagName: ''\n });\n }\n\n finishTag() {\n this.addLocInfo();\n }\n\n markTagAsSelfClosing() {\n this.current(TokenType.StartTag).selfClosing = true;\n }\n\n // Tags - name\n appendToTagName(char: string) {\n this.current(TokenType.StartTag, TokenType.EndTag).tagName += char;\n }\n\n // Tags - attributes\n\n beginAttribute() {\n this._currentAttribute = ['', '', false];\n }\n\n appendToAttributeName(char: string) {\n this.currentAttribute()![0] += char;\n }\n\n beginAttributeValue(isQuoted: boolean) {\n this.currentAttribute()![2] = isQuoted;\n }\n\n appendToAttributeValue(char: string) {\n this.currentAttribute()![1] += char;\n }\n\n finishAttributeValue() {\n this.current(TokenType.StartTag).attributes.push(this._currentAttribute!);\n }\n\n reportSyntaxError(message: string) {\n this.current().syntaxError = message;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"deprecated\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"htmlEntities\"];","/**\n * @typedef LoggerItem\n * @property {Function} log Which logger recorded the message\n * @property {Array<any>} args White arguments were supplied to the logger\n */\n\nexport function createLogger() {\n\t/**\n\t * Creates a log handler with block validation prefix.\n\t *\n\t * @param {Function} logger Original logger function.\n\t *\n\t * @return {Function} Augmented logger function.\n\t */\n\tfunction createLogHandler( logger ) {\n\t\tlet log = ( message, ...args ) =>\n\t\t\tlogger( 'Block validation: ' + message, ...args );\n\n\t\t// In test environments, pre-process string substitutions to improve\n\t\t// readability of error messages. We'd prefer to avoid pulling in this\n\t\t// dependency in runtime environments, and it can be dropped by a combo\n\t\t// of Webpack env substitution + UglifyJS dead code elimination.\n\t\tif ( process.env.NODE_ENV === 'test' ) {\n\t\t\tlog = ( ...args ) => logger( require( 'util' ).format( ...args ) );\n\t\t}\n\n\t\treturn log;\n\t}\n\n\treturn {\n\t\t// eslint-disable-next-line no-console\n\t\terror: createLogHandler( console.error ),\n\t\t// eslint-disable-next-line no-console\n\t\twarning: createLogHandler( console.warn ),\n\t\tgetItems() {\n\t\t\treturn [];\n\t\t},\n\t};\n}\n\nexport function createQueuedLogger() {\n\t/**\n\t * The list of enqueued log actions to print.\n\t *\n\t * @type {Array<LoggerItem>}\n\t */\n\tconst queue = [];\n\n\tconst logger = createLogger();\n\n\treturn {\n\t\terror( ...args ) {\n\t\t\tqueue.push( { log: logger.error, args } );\n\t\t},\n\t\twarning( ...args ) {\n\t\t\tqueue.push( { log: logger.warning, args } );\n\t\t},\n\t\tgetItems() {\n\t\t\treturn queue;\n\t\t},\n\t};\n}\n","/**\n * External dependencies\n */\nimport { Tokenizer } from 'simple-html-tokenizer';\nimport { isEqual, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { createLogger, createQueuedLogger } from './logger';\nimport { getSaveContent } from '../serializer';\nimport {\n\tgetFreeformContentHandlerName,\n\tgetUnregisteredTypeHandlerName,\n} from '../registration';\nimport { normalizeBlockType } from '../utils';\n\n/** @typedef {import('../parser').WPBlock} WPBlock */\n/** @typedef {import('../registration').WPBlockType} WPBlockType */\n/** @typedef {import('./logger').LoggerItem} LoggerItem */\n\nconst identity = ( x ) => x;\n\n/**\n * Globally matches any consecutive whitespace\n *\n * @type {RegExp}\n */\nconst REGEXP_WHITESPACE = /[\\t\\n\\r\\v\\f ]+/g;\n\n/**\n * Matches a string containing only whitespace\n *\n * @type {RegExp}\n */\nconst REGEXP_ONLY_WHITESPACE = /^[\\t\\n\\r\\v\\f ]*$/;\n\n/**\n * Matches a CSS URL type value\n *\n * @type {RegExp}\n */\nconst REGEXP_STYLE_URL_TYPE = /^url\\s*\\(['\"\\s]*(.*?)['\"\\s]*\\)$/;\n\n/**\n * Boolean attributes are attributes whose presence as being assigned is\n * meaningful, even if only empty.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( Array.from( document.querySelectorAll( '#attributes-1 > tbody > tr' ) )\n * .filter( ( tr ) => tr.lastChild.textContent.indexOf( 'Boolean attribute' ) !== -1 )\n * .reduce( ( result, tr ) => Object.assign( result, {\n * [ tr.firstChild.textContent.trim() ]: true\n * } ), {} ) ).sort();\n *\n * @type {Array}\n */\nconst BOOLEAN_ATTRIBUTES = [\n\t'allowfullscreen',\n\t'allowpaymentrequest',\n\t'allowusermedia',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'download',\n\t'formnovalidate',\n\t'hidden',\n\t'ismap',\n\t'itemscope',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'selected',\n\t'typemustmatch',\n];\n\n/**\n * Enumerated attributes are attributes which must be of a specific value form.\n * Like boolean attributes, these are meaningful if specified, even if not of a\n * valid enumerated value.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( Array.from( document.querySelectorAll( '#attributes-1 > tbody > tr' ) )\n * .filter( ( tr ) => /^(\"(.+?)\";?\\s*)+/.test( tr.lastChild.textContent.trim() ) )\n * .reduce( ( result, tr ) => Object.assign( result, {\n * [ tr.firstChild.textContent.trim() ]: true\n * } ), {} ) ).sort();\n *\n * @type {Array}\n */\nconst ENUMERATED_ATTRIBUTES = [\n\t'autocapitalize',\n\t'autocomplete',\n\t'charset',\n\t'contenteditable',\n\t'crossorigin',\n\t'decoding',\n\t'dir',\n\t'draggable',\n\t'enctype',\n\t'formenctype',\n\t'formmethod',\n\t'http-equiv',\n\t'inputmode',\n\t'kind',\n\t'method',\n\t'preload',\n\t'scope',\n\t'shape',\n\t'spellcheck',\n\t'translate',\n\t'type',\n\t'wrap',\n];\n\n/**\n * Meaningful attributes are those who cannot be safely ignored when omitted in\n * one HTML markup string and not another.\n *\n * @type {Array}\n */\nconst MEANINGFUL_ATTRIBUTES = [\n\t...BOOLEAN_ATTRIBUTES,\n\t...ENUMERATED_ATTRIBUTES,\n];\n\n/**\n * Array of functions which receive a text string on which to apply normalizing\n * behavior for consideration in text token equivalence, carefully ordered from\n * least-to-most expensive operations.\n *\n * @type {Array}\n */\nconst TEXT_NORMALIZATIONS = [ identity, getTextWithCollapsedWhitespace ];\n\n/**\n * Regular expression matching a named character reference. In lieu of bundling\n * a full set of references, the pattern covers the minimal necessary to test\n * positively against the full set.\n *\n * \"The ampersand must be followed by one of the names given in the named\n * character references section, using the same case.\"\n *\n * Tested aginst \"12.5 Named character references\":\n *\n * ```\n * const references = Array.from( document.querySelectorAll(\n * '#named-character-references-table tr[id^=entity-] td:first-child'\n * ) ).map( ( code ) => code.textContent )\n * references.every( ( reference ) => /^[\\da-z]+$/i.test( reference ) )\n * ```\n *\n * @see https://html.spec.whatwg.org/multipage/syntax.html#character-references\n * @see https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references\n *\n * @type {RegExp}\n */\nconst REGEXP_NAMED_CHARACTER_REFERENCE = /^[\\da-z]+$/i;\n\n/**\n * Regular expression matching a decimal character reference.\n *\n * \"The ampersand must be followed by a U+0023 NUMBER SIGN character (#),\n * followed by one or more ASCII digits, representing a base-ten integer\"\n *\n * @see https://html.spec.whatwg.org/multipage/syntax.html#character-references\n *\n * @type {RegExp}\n */\nconst REGEXP_DECIMAL_CHARACTER_REFERENCE = /^#\\d+$/;\n\n/**\n * Regular expression matching a hexadecimal character reference.\n *\n * \"The ampersand must be followed by a U+0023 NUMBER SIGN character (#), which\n * must be followed by either a U+0078 LATIN SMALL LETTER X character (x) or a\n * U+0058 LATIN CAPITAL LETTER X character (X), which must then be followed by\n * one or more ASCII hex digits, representing a hexadecimal integer\"\n *\n * @see https://html.spec.whatwg.org/multipage/syntax.html#character-references\n *\n * @type {RegExp}\n */\nconst REGEXP_HEXADECIMAL_CHARACTER_REFERENCE = /^#x[\\da-f]+$/i;\n\n/**\n * Returns true if the given string is a valid character reference segment, or\n * false otherwise. The text should be stripped of `&` and `;` demarcations.\n *\n * @param {string} text Text to test.\n *\n * @return {boolean} Whether text is valid character reference.\n */\nexport function isValidCharacterReference( text ) {\n\treturn (\n\t\tREGEXP_NAMED_CHARACTER_REFERENCE.test( text ) ||\n\t\tREGEXP_DECIMAL_CHARACTER_REFERENCE.test( text ) ||\n\t\tREGEXP_HEXADECIMAL_CHARACTER_REFERENCE.test( text )\n\t);\n}\n\n/**\n * Subsitute EntityParser class for `simple-html-tokenizer` which uses the\n * implementation of `decodeEntities` from `html-entities`, in order to avoid\n * bundling a massive named character reference.\n *\n * @see https://github.com/tildeio/simple-html-tokenizer/tree/HEAD/src/entity-parser.ts\n */\nexport class DecodeEntityParser {\n\t/**\n\t * Returns a substitute string for an entity string sequence between `&`\n\t * and `;`, or undefined if no substitution should occur.\n\t *\n\t * @param {string} entity Entity fragment discovered in HTML.\n\t *\n\t * @return {?string} Entity substitute value.\n\t */\n\tparse( entity ) {\n\t\tif ( isValidCharacterReference( entity ) ) {\n\t\t\treturn decodeEntities( '&' + entity + ';' );\n\t\t}\n\t}\n}\n\n/**\n * Given a specified string, returns an array of strings split by consecutive\n * whitespace, ignoring leading or trailing whitespace.\n *\n * @param {string} text Original text.\n *\n * @return {string[]} Text pieces split on whitespace.\n */\nexport function getTextPiecesSplitOnWhitespace( text ) {\n\treturn text.trim().split( REGEXP_WHITESPACE );\n}\n\n/**\n * Given a specified string, returns a new trimmed string where all consecutive\n * whitespace is collapsed to a single space.\n *\n * @param {string} text Original text.\n *\n * @return {string} Trimmed text with consecutive whitespace collapsed.\n */\nexport function getTextWithCollapsedWhitespace( text ) {\n\t// This is an overly simplified whitespace comparison. The specification is\n\t// more prescriptive of whitespace behavior in inline and block contexts.\n\t//\n\t// See: https://medium.com/@patrickbrosset/when-does-white-space-matter-in-html-b90e8a7cdd33\n\treturn getTextPiecesSplitOnWhitespace( text ).join( ' ' );\n}\n\n/**\n * Returns attribute pairs of the given StartTag token, including only pairs\n * where the value is non-empty or the attribute is a boolean attribute, an\n * enumerated attribute, or a custom data- attribute.\n *\n * @see MEANINGFUL_ATTRIBUTES\n *\n * @param {Object} token StartTag token.\n *\n * @return {Array[]} Attribute pairs.\n */\nexport function getMeaningfulAttributePairs( token ) {\n\treturn token.attributes.filter( ( pair ) => {\n\t\tconst [ key, value ] = pair;\n\t\treturn (\n\t\t\tvalue ||\n\t\t\tkey.indexOf( 'data-' ) === 0 ||\n\t\t\tincludes( MEANINGFUL_ATTRIBUTES, key )\n\t\t);\n\t} );\n}\n\n/**\n * Returns true if two text tokens (with `chars` property) are equivalent, or\n * false otherwise.\n *\n * @param {Object} actual Actual token.\n * @param {Object} expected Expected token.\n * @param {Object} logger Validation logger object.\n *\n * @return {boolean} Whether two text tokens are equivalent.\n */\nexport function isEquivalentTextTokens(\n\tactual,\n\texpected,\n\tlogger = createLogger()\n) {\n\t// This function is intentionally written as syntactically \"ugly\" as a hot\n\t// path optimization. Text is progressively normalized in order from least-\n\t// to-most operationally expensive, until the earliest point at which text\n\t// can be confidently inferred as being equal.\n\tlet actualChars = actual.chars;\n\tlet expectedChars = expected.chars;\n\n\tfor ( let i = 0; i < TEXT_NORMALIZATIONS.length; i++ ) {\n\t\tconst normalize = TEXT_NORMALIZATIONS[ i ];\n\n\t\tactualChars = normalize( actualChars );\n\t\texpectedChars = normalize( expectedChars );\n\n\t\tif ( actualChars === expectedChars ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tlogger.warning(\n\t\t'Expected text `%s`, saw `%s`.',\n\t\texpected.chars,\n\t\tactual.chars\n\t);\n\n\treturn false;\n}\n\n/**\n * Given a CSS length value, returns a normalized CSS length value for strict equality\n * comparison.\n *\n * @param {string} value CSS length value.\n *\n * @return {string} Normalized CSS length value.\n */\nexport function getNormalizedLength( value ) {\n\tif ( 0 === parseFloat( value ) ) {\n\t\treturn '0';\n\t}\n\t// Normalize strings with floats to always include a leading zero.\n\tif ( value.indexOf( '.' ) === 0 ) {\n\t\treturn '0' + value;\n\t}\n\n\treturn value;\n}\n\n/**\n * Given a style value, returns a normalized style value for strict equality\n * comparison.\n *\n * @param {string} value Style value.\n *\n * @return {string} Normalized style value.\n */\nexport function getNormalizedStyleValue( value ) {\n\tconst textPieces = getTextPiecesSplitOnWhitespace( value );\n\tconst normalizedPieces = textPieces.map( getNormalizedLength );\n\tconst result = normalizedPieces.join( ' ' );\n\n\treturn (\n\t\tresult\n\t\t\t// Normalize URL type to omit whitespace or quotes.\n\t\t\t.replace( REGEXP_STYLE_URL_TYPE, 'url($1)' )\n\t);\n}\n\n/**\n * Given a style attribute string, returns an object of style properties.\n *\n * @param {string} text Style attribute.\n *\n * @return {Object} Style properties.\n */\nexport function getStyleProperties( text ) {\n\tconst pairs = text\n\t\t// Trim ending semicolon (avoid including in split)\n\t\t.replace( /;?\\s*$/, '' )\n\t\t// Split on property assignment.\n\t\t.split( ';' )\n\t\t// For each property assignment...\n\t\t.map( ( style ) => {\n\t\t\t// ...split further into key-value pairs.\n\t\t\tconst [ key, ...valueParts ] = style.split( ':' );\n\t\t\tconst value = valueParts.join( ':' );\n\n\t\t\treturn [ key.trim(), getNormalizedStyleValue( value.trim() ) ];\n\t\t} );\n\n\treturn Object.fromEntries( pairs );\n}\n\n/**\n * Attribute-specific equality handlers\n *\n * @type {Object}\n */\nexport const isEqualAttributesOfName = {\n\tclass: ( actual, expected ) => {\n\t\t// Class matches if members are the same, even if out of order or\n\t\t// superfluous whitespace between.\n\t\tconst [ actualPieces, expectedPieces ] = [ actual, expected ].map(\n\t\t\tgetTextPiecesSplitOnWhitespace\n\t\t);\n\t\tconst actualDiff = actualPieces.filter(\n\t\t\t( c ) => ! expectedPieces.includes( c )\n\t\t);\n\t\tconst expectedDiff = expectedPieces.filter(\n\t\t\t( c ) => ! actualPieces.includes( c )\n\t\t);\n\n\t\treturn actualDiff.length === 0 && expectedDiff.length === 0;\n\t},\n\tstyle: ( actual, expected ) => {\n\t\treturn isEqual( ...[ actual, expected ].map( getStyleProperties ) );\n\t},\n\t// For each boolean attribute, mere presence of attribute in both is enough\n\t// to assume equivalence.\n\t...Object.fromEntries(\n\t\tBOOLEAN_ATTRIBUTES.map( ( attribute ) => [ attribute, () => true ] )\n\t),\n};\n\n/**\n * Given two sets of attribute tuples, returns true if the attribute sets are\n * equivalent.\n *\n * @param {Array[]} actual Actual attributes tuples.\n * @param {Array[]} expected Expected attributes tuples.\n * @param {Object} logger Validation logger object.\n *\n * @return {boolean} Whether attributes are equivalent.\n */\nexport function isEqualTagAttributePairs(\n\tactual,\n\texpected,\n\tlogger = createLogger()\n) {\n\t// Attributes is tokenized as tuples. Their lengths should match. This also\n\t// avoids us needing to check both attributes sets, since if A has any keys\n\t// which do not exist in B, we know the sets to be different.\n\tif ( actual.length !== expected.length ) {\n\t\tlogger.warning(\n\t\t\t'Expected attributes %o, instead saw %o.',\n\t\t\texpected,\n\t\t\tactual\n\t\t);\n\t\treturn false;\n\t}\n\n\t// Attributes are not guaranteed to occur in the same order. For validating\n\t// actual attributes, first convert the set of expected attribute values to\n\t// an object, for lookup by key.\n\tconst expectedAttributes = {};\n\tfor ( let i = 0; i < expected.length; i++ ) {\n\t\texpectedAttributes[ expected[ i ][ 0 ].toLowerCase() ] =\n\t\t\texpected[ i ][ 1 ];\n\t}\n\n\tfor ( let i = 0; i < actual.length; i++ ) {\n\t\tconst [ name, actualValue ] = actual[ i ];\n\t\tconst nameLower = name.toLowerCase();\n\n\t\t// As noted above, if missing member in B, assume different.\n\t\tif ( ! expectedAttributes.hasOwnProperty( nameLower ) ) {\n\t\t\tlogger.warning( 'Encountered unexpected attribute `%s`.', name );\n\t\t\treturn false;\n\t\t}\n\n\t\tconst expectedValue = expectedAttributes[ nameLower ];\n\t\tconst isEqualAttributes = isEqualAttributesOfName[ nameLower ];\n\n\t\tif ( isEqualAttributes ) {\n\t\t\t// Defer custom attribute equality handling.\n\t\t\tif ( ! isEqualAttributes( actualValue, expectedValue ) ) {\n\t\t\t\tlogger.warning(\n\t\t\t\t\t'Expected attribute `%s` of value `%s`, saw `%s`.',\n\t\t\t\t\tname,\n\t\t\t\t\texpectedValue,\n\t\t\t\t\tactualValue\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if ( actualValue !== expectedValue ) {\n\t\t\t// Otherwise strict inequality should bail.\n\t\t\tlogger.warning(\n\t\t\t\t'Expected attribute `%s` of value `%s`, saw `%s`.',\n\t\t\t\tname,\n\t\t\t\texpectedValue,\n\t\t\t\tactualValue\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n/**\n * Token-type-specific equality handlers\n *\n * @type {Object}\n */\nexport const isEqualTokensOfType = {\n\tStartTag: ( actual, expected, logger = createLogger() ) => {\n\t\tif (\n\t\t\tactual.tagName !== expected.tagName &&\n\t\t\t// Optimization: Use short-circuit evaluation to defer case-\n\t\t\t// insensitive check on the assumption that the majority case will\n\t\t\t// have exactly equal tag names.\n\t\t\tactual.tagName.toLowerCase() !== expected.tagName.toLowerCase()\n\t\t) {\n\t\t\tlogger.warning(\n\t\t\t\t'Expected tag name `%s`, instead saw `%s`.',\n\t\t\t\texpected.tagName,\n\t\t\t\tactual.tagName\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn isEqualTagAttributePairs(\n\t\t\t...[ actual, expected ].map( getMeaningfulAttributePairs ),\n\t\t\tlogger\n\t\t);\n\t},\n\tChars: isEquivalentTextTokens,\n\tComment: isEquivalentTextTokens,\n};\n\n/**\n * Given an array of tokens, returns the first token which is not purely\n * whitespace.\n *\n * Mutates the tokens array.\n *\n * @param {Object[]} tokens Set of tokens to search.\n *\n * @return {Object} Next non-whitespace token.\n */\nexport function getNextNonWhitespaceToken( tokens ) {\n\tlet token;\n\twhile ( ( token = tokens.shift() ) ) {\n\t\tif ( token.type !== 'Chars' ) {\n\t\t\treturn token;\n\t\t}\n\n\t\tif ( ! REGEXP_ONLY_WHITESPACE.test( token.chars ) ) {\n\t\t\treturn token;\n\t\t}\n\t}\n}\n\n/**\n * Tokenize an HTML string, gracefully handling any errors thrown during\n * underlying tokenization.\n *\n * @param {string} html HTML string to tokenize.\n * @param {Object} logger Validation logger object.\n *\n * @return {Object[]|null} Array of valid tokenized HTML elements, or null on error\n */\nfunction getHTMLTokens( html, logger = createLogger() ) {\n\ttry {\n\t\treturn new Tokenizer( new DecodeEntityParser() ).tokenize( html );\n\t} catch ( e ) {\n\t\tlogger.warning( 'Malformed HTML detected: %s', html );\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns true if the next HTML token closes the current token.\n *\n * @param {Object} currentToken Current token to compare with.\n * @param {Object|undefined} nextToken Next token to compare against.\n *\n * @return {boolean} true if `nextToken` closes `currentToken`, false otherwise\n */\nexport function isClosedByToken( currentToken, nextToken ) {\n\t// Ensure this is a self closed token.\n\tif ( ! currentToken.selfClosing ) {\n\t\treturn false;\n\t}\n\n\t// Check token names and determine if nextToken is the closing tag for currentToken.\n\tif (\n\t\tnextToken &&\n\t\tnextToken.tagName === currentToken.tagName &&\n\t\tnextToken.type === 'EndTag'\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Returns true if the given HTML strings are effectively equivalent, or\n * false otherwise. Invalid HTML is not considered equivalent, even if the\n * strings directly match.\n *\n * @param {string} actual Actual HTML string.\n * @param {string} expected Expected HTML string.\n * @param {Object} logger Validation logger object.\n *\n * @return {boolean} Whether HTML strings are equivalent.\n */\nexport function isEquivalentHTML( actual, expected, logger = createLogger() ) {\n\t// Short-circuit if markup is identical.\n\tif ( actual === expected ) {\n\t\treturn true;\n\t}\n\n\t// Tokenize input content and reserialized save content.\n\tconst [ actualTokens, expectedTokens ] = [ actual, expected ].map(\n\t\t( html ) => getHTMLTokens( html, logger )\n\t);\n\n\t// If either is malformed then stop comparing - the strings are not equivalent.\n\tif ( ! actualTokens || ! expectedTokens ) {\n\t\treturn false;\n\t}\n\n\tlet actualToken, expectedToken;\n\twhile ( ( actualToken = getNextNonWhitespaceToken( actualTokens ) ) ) {\n\t\texpectedToken = getNextNonWhitespaceToken( expectedTokens );\n\n\t\t// Inequal if exhausted all expected tokens.\n\t\tif ( ! expectedToken ) {\n\t\t\tlogger.warning(\n\t\t\t\t'Expected end of content, instead saw %o.',\n\t\t\t\tactualToken\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Inequal if next non-whitespace token of each set are not same type.\n\t\tif ( actualToken.type !== expectedToken.type ) {\n\t\t\tlogger.warning(\n\t\t\t\t'Expected token of type `%s` (%o), instead saw `%s` (%o).',\n\t\t\t\texpectedToken.type,\n\t\t\t\texpectedToken,\n\t\t\t\tactualToken.type,\n\t\t\t\tactualToken\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Defer custom token type equality handling, otherwise continue and\n\t\t// assume as equal.\n\t\tconst isEqualTokens = isEqualTokensOfType[ actualToken.type ];\n\t\tif (\n\t\t\tisEqualTokens &&\n\t\t\t! isEqualTokens( actualToken, expectedToken, logger )\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Peek at the next tokens (actual and expected) to see if they close\n\t\t// a self-closing tag.\n\t\tif ( isClosedByToken( actualToken, expectedTokens[ 0 ] ) ) {\n\t\t\t// Consume the next expected token that closes the current actual\n\t\t\t// self-closing token.\n\t\t\tgetNextNonWhitespaceToken( expectedTokens );\n\t\t} else if ( isClosedByToken( expectedToken, actualTokens[ 0 ] ) ) {\n\t\t\t// Consume the next actual token that closes the current expected\n\t\t\t// self-closing token.\n\t\t\tgetNextNonWhitespaceToken( actualTokens );\n\t\t}\n\t}\n\n\tif ( ( expectedToken = getNextNonWhitespaceToken( expectedTokens ) ) ) {\n\t\t// If any non-whitespace tokens remain in expected token set, this\n\t\t// indicates inequality.\n\t\tlogger.warning(\n\t\t\t'Expected %o, instead saw end of content.',\n\t\t\texpectedToken\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Returns an object with `isValid` property set to `true` if the parsed block\n * is valid given the input content. A block is considered valid if, when serialized\n * with assumed attributes, the content matches the original value. If block is\n * invalid, this function returns all validations issues as well.\n *\n * @param {string|Object} blockTypeOrName Block type.\n * @param {Object} attributes Parsed block attributes.\n * @param {string} originalBlockContent Original block content.\n * @param {Object} logger Validation logger object.\n *\n * @return {Object} Whether block is valid and contains validation messages.\n */\n\n/**\n * Returns an object with `isValid` property set to `true` if the parsed block\n * is valid given the input content. A block is considered valid if, when serialized\n * with assumed attributes, the content matches the original value. If block is\n * invalid, this function returns all validations issues as well.\n *\n * @param {WPBlock} block block object.\n * @param {WPBlockType|string} [blockTypeOrName = block.name] Block type or name, inferred from block if not given.\n *\n * @return {[boolean,Array<LoggerItem>]} validation results.\n */\nexport function validateBlock( block, blockTypeOrName = block.name ) {\n\tconst isFallbackBlock =\n\t\tblock.name === getFreeformContentHandlerName() ||\n\t\tblock.name === getUnregisteredTypeHandlerName();\n\n\t// Shortcut to avoid costly validation.\n\tif ( isFallbackBlock ) {\n\t\treturn [ true, [] ];\n\t}\n\n\tconst logger = createQueuedLogger();\n\tconst blockType = normalizeBlockType( blockTypeOrName );\n\tlet generatedBlockContent;\n\ttry {\n\t\tgeneratedBlockContent = getSaveContent( blockType, block.attributes );\n\t} catch ( error ) {\n\t\tlogger.error(\n\t\t\t'Block validation failed because an error occurred while generating block content:\\n\\n%s',\n\t\t\terror.toString()\n\t\t);\n\n\t\treturn [ false, logger.getItems() ];\n\t}\n\n\tconst isValid = isEquivalentHTML(\n\t\tblock.originalContent,\n\t\tgeneratedBlockContent,\n\t\tlogger\n\t);\n\n\tif ( ! isValid ) {\n\t\tlogger.error(\n\t\t\t'Block validation failed for `%s` (%o).\\n\\nContent generated by `save` function:\\n\\n%s\\n\\nContent retrieved from post body:\\n\\n%s',\n\t\t\tblockType.name,\n\t\t\tblockType,\n\t\t\tgeneratedBlockContent,\n\t\t\tblock.originalContent\n\t\t);\n\t}\n\n\treturn [ isValid, logger.getItems() ];\n}\n\n/**\n * Returns true if the parsed block is valid given the input content. A block\n * is considered valid if, when serialized with assumed attributes, the content\n * matches the original value.\n *\n * Logs to console in development environments when invalid.\n *\n * @deprecated Use validateBlock instead to avoid data loss.\n *\n * @param {string|Object} blockTypeOrName Block type.\n * @param {Object} attributes Parsed block attributes.\n * @param {string} originalBlockContent Original block content.\n *\n * @return {boolean} Whether block is valid.\n */\nexport function isValidBlockContent(\n\tblockTypeOrName,\n\tattributes,\n\toriginalBlockContent\n) {\n\tdeprecated( 'isValidBlockContent introduces opportunity for data loss', {\n\t\tsince: '12.6',\n\t\tplugin: 'Gutenberg',\n\t\talternative: 'validateBlock',\n\t} );\n\n\tconst blockType = normalizeBlockType( blockTypeOrName );\n\tconst block = {\n\t\tname: blockType.name,\n\t\tattributes,\n\t\tinnerBlocks: [],\n\t\toriginalContent: originalBlockContent,\n\t};\n\tconst [ isValid ] = validateBlock( block, blockType );\n\n\treturn isValid;\n}\n","/**\n * Convert legacy blocks to their canonical form. This function is used\n * both in the parser level for previous content and to convert such blocks\n * used in Custom Post Types templates.\n *\n * @param {string} name The block's name\n * @param {Object} attributes The block's attributes\n *\n * @return {[string, Object]} The block's name and attributes, changed accordingly if a match was found\n */\nexport function convertLegacyBlockNameAndAttributes( name, attributes ) {\n\tconst newAttributes = { ...attributes };\n\t// Convert 'core/cover-image' block in existing content to 'core/cover'.\n\tif ( 'core/cover-image' === name ) {\n\t\tname = 'core/cover';\n\t}\n\n\t// Convert 'core/text' blocks in existing content to 'core/paragraph'.\n\tif ( 'core/text' === name || 'core/cover-text' === name ) {\n\t\tname = 'core/paragraph';\n\t}\n\n\t// Convert derivative blocks such as 'core/social-link-wordpress' to the\n\t// canonical form 'core/social-link'.\n\tif ( name && name.indexOf( 'core/social-link-' ) === 0 ) {\n\t\t// Capture `social-link-wordpress` into `{\"service\":\"wordpress\"}`\n\t\tnewAttributes.service = name.substring( 17 );\n\t\tname = 'core/social-link';\n\t}\n\n\t// Convert derivative blocks such as 'core-embed/instagram' to the\n\t// canonical form 'core/embed'.\n\tif ( name && name.indexOf( 'core-embed/' ) === 0 ) {\n\t\t// Capture `core-embed/instagram` into `{\"providerNameSlug\":\"instagram\"}`\n\t\tconst providerSlug = name.substring( 11 );\n\t\tconst deprecated = {\n\t\t\tspeaker: 'speaker-deck',\n\t\t\tpolldaddy: 'crowdsignal',\n\t\t};\n\t\tnewAttributes.providerNameSlug =\n\t\t\tproviderSlug in deprecated\n\t\t\t\t? deprecated[ providerSlug ]\n\t\t\t\t: providerSlug;\n\t\t// This is needed as the `responsive` attribute was passed\n\t\t// in a different way before the refactoring to block variations.\n\t\tif ( ! [ 'amazon-kindle', 'wordpress' ].includes( providerSlug ) ) {\n\t\t\tnewAttributes.responsive = true;\n\t\t}\n\t\tname = 'core/embed';\n\t}\n\n\t// Convert Post Comment blocks in existing content to Comment blocks.\n\t// TODO: Remove these checks when WordPress 6.0 is released.\n\tif ( name === 'core/post-comment-author' ) {\n\t\tname = 'core/comment-author-name';\n\t}\n\tif ( name === 'core/post-comment-content' ) {\n\t\tname = 'core/comment-content';\n\t}\n\tif ( name === 'core/post-comment-date' ) {\n\t\tname = 'core/comment-date';\n\t}\n\tif ( name === 'core/comments-query-loop' ) {\n\t\tname = 'core/comments';\n\t\tconst { className = '' } = newAttributes;\n\t\tif ( ! className.includes( 'wp-block-comments-query-loop' ) ) {\n\t\t\tnewAttributes.className = [\n\t\t\t\t'wp-block-comments-query-loop',\n\t\t\t\tclassName,\n\t\t\t].join( ' ' );\n\t\t}\n\t\t// Note that we also had to add a deprecation to the block in order\n\t\t// for the ID change to work.\n\t}\n\tif ( name === 'core/post-comments' ) {\n\t\tname = 'core/comments';\n\t\tnewAttributes.legacy = true;\n\t}\n\n\treturn [ name, newAttributes ];\n}\n","/**\n * Given object and string of dot-delimited path segments, returns value at\n * path or undefined if path cannot be resolved.\n *\n * @param {Object} object Lookup object\n * @param {string} path Path to resolve\n * @return {?*} Resolved value\n */\nexport default function getPath(object, path) {\n var segments = path.split('.');\n var segment;\n\n while (segment = segments.shift()) {\n if (!(segment in object)) {\n return;\n }\n\n object = object[segment];\n }\n\n return object;\n}","/**\n * Internal dependencies\n */\nimport getPath from './get-path';\n/**\n * Function returning a DOM document created by `createHTMLDocument`. The same\n * document is returned between invocations.\n *\n * @return {Document} DOM document.\n */\n\nvar getDocument = function () {\n var doc;\n return function () {\n if (!doc) {\n doc = document.implementation.createHTMLDocument('');\n }\n\n return doc;\n };\n}();\n/**\n * Given a markup string or DOM element, creates an object aligning with the\n * shape of the matchers object, or the value returned by the matcher.\n *\n * @param {(string|Element)} source Source content\n * @param {(Object|Function)} matchers Matcher function or object of matchers\n * @return {(Object|*)} Matched value(s), shaped by object\n */\n\n\nexport function parse(source, matchers) {\n if (!matchers) {\n return;\n } // Coerce to element\n\n\n if ('string' === typeof source) {\n var doc = getDocument();\n doc.body.innerHTML = source;\n source = doc.body;\n } // Return singular value\n\n\n if ('function' === typeof matchers) {\n return matchers(source);\n } // Bail if we can't handle matchers\n\n\n if (Object !== matchers.constructor) {\n return;\n } // Shape result by matcher object\n\n\n return Object.keys(matchers).reduce(function (memo, key) {\n memo[key] = parse(source, matchers[key]);\n return memo;\n }, {});\n}\n/**\n * Generates a function which matches node of type selector, returning an\n * attribute by property if the attribute exists. If no selector is passed,\n * returns property of the query element.\n *\n * @param {?string} selector Optional selector\n * @param {string} name Property name\n * @return {*} Property value\n */\n\nexport function prop(selector, name) {\n if (1 === arguments.length) {\n name = selector;\n selector = undefined;\n }\n\n return function (node) {\n var match = node;\n\n if (selector) {\n match = node.querySelector(selector);\n }\n\n if (match) {\n return getPath(match, name);\n }\n };\n}\n/**\n * Generates a function which matches node of type selector, returning an\n * attribute by name if the attribute exists. If no selector is passed,\n * returns attribute of the query element.\n *\n * @param {?string} selector Optional selector\n * @param {string} name Attribute name\n * @return {?string} Attribute value\n */\n\nexport function attr(selector, name) {\n if (1 === arguments.length) {\n name = selector;\n selector = undefined;\n }\n\n return function (node) {\n var attributes = prop(selector, 'attributes')(node);\n\n if (attributes && attributes.hasOwnProperty(name)) {\n return attributes[name].value;\n }\n };\n}\n/**\n * Convenience for `prop( selector, 'innerHTML' )`.\n *\n * @see prop()\n *\n * @param {?string} selector Optional selector\n * @return {string} Inner HTML\n */\n\nexport function html(selector) {\n return prop(selector, 'innerHTML');\n}\n/**\n * Convenience for `prop( selector, 'textContent' )`.\n *\n * @see prop()\n *\n * @param {?string} selector Optional selector\n * @return {string} Text content\n */\n\nexport function text(selector) {\n return prop(selector, 'textContent');\n}\n/**\n * Creates a new matching context by first finding elements matching selector\n * using querySelectorAll before then running another `parse` on `matchers`\n * scoped to the matched elements.\n *\n * @see parse()\n *\n * @param {string} selector Selector to match\n * @param {(Object|Function)} matchers Matcher function or object of matchers\n * @return {Array.<*,Object>} Array of matched value(s)\n */\n\nexport function query(selector, matchers) {\n return function (node) {\n var matches = node.querySelectorAll(selector);\n return [].map.call(matches, function (match) {\n return parse(match, matchers);\n });\n };\n}","/**\n * Internal dependencies\n */\nimport * as children from './children';\n\n/**\n * A representation of a single node within a block's rich text value. If\n * representing a text node, the value is simply a string of the node value.\n * As representing an element node, it is an object of:\n *\n * 1. `type` (string): Tag name.\n * 2. `props` (object): Attributes and children array of WPBlockNode.\n *\n * @typedef {string|Object} WPBlockNode\n */\n\n/**\n * Given a single node and a node type (e.g. `'br'`), returns true if the node\n * corresponds to that type, false otherwise.\n *\n * @param {WPBlockNode} node Block node to test\n * @param {string} type Node to type to test against.\n *\n * @return {boolean} Whether node is of intended type.\n */\nfunction isNodeOfType( node, type ) {\n\treturn node && node.type === type;\n}\n\n/**\n * Given an object implementing the NamedNodeMap interface, returns a plain\n * object equivalent value of name, value key-value pairs.\n *\n * @see https://dom.spec.whatwg.org/#interface-namednodemap\n *\n * @param {NamedNodeMap} nodeMap NamedNodeMap to convert to object.\n *\n * @return {Object} Object equivalent value of NamedNodeMap.\n */\nexport function getNamedNodeMapAsObject( nodeMap ) {\n\tconst result = {};\n\tfor ( let i = 0; i < nodeMap.length; i++ ) {\n\t\tconst { name, value } = nodeMap[ i ];\n\t\tresult[ name ] = value;\n\t}\n\n\treturn result;\n}\n\n/**\n * Given a DOM Element or Text node, returns an equivalent block node. Throws\n * if passed any node type other than element or text.\n *\n * @throws {TypeError} If non-element/text node is passed.\n *\n * @param {Node} domNode DOM node to convert.\n *\n * @return {WPBlockNode} Block node equivalent to DOM node.\n */\nexport function fromDOM( domNode ) {\n\tif ( domNode.nodeType === domNode.TEXT_NODE ) {\n\t\treturn domNode.nodeValue;\n\t}\n\n\tif ( domNode.nodeType !== domNode.ELEMENT_NODE ) {\n\t\tthrow new TypeError(\n\t\t\t'A block node can only be created from a node of type text or ' +\n\t\t\t\t'element.'\n\t\t);\n\t}\n\n\treturn {\n\t\ttype: domNode.nodeName.toLowerCase(),\n\t\tprops: {\n\t\t\t...getNamedNodeMapAsObject( domNode.attributes ),\n\t\t\tchildren: children.fromDOM( domNode.childNodes ),\n\t\t},\n\t};\n}\n\n/**\n * Given a block node, returns its HTML string representation.\n *\n * @param {WPBlockNode} node Block node to convert to string.\n *\n * @return {string} String HTML representation of block node.\n */\nexport function toHTML( node ) {\n\treturn children.toHTML( [ node ] );\n}\n\n/**\n * Given a selector, returns an hpq matcher generating a WPBlockNode value\n * matching the selector result.\n *\n * @param {string} selector DOM selector.\n *\n * @return {Function} hpq matcher.\n */\nexport function matcher( selector ) {\n\treturn ( domNode ) => {\n\t\tlet match = domNode;\n\n\t\tif ( selector ) {\n\t\t\tmatch = domNode.querySelector( selector );\n\t\t}\n\n\t\ttry {\n\t\t\treturn fromDOM( match );\n\t\t} catch ( error ) {\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\n/**\n * Object of utility functions used in managing block attribute values of\n * source `node`.\n *\n * @see https://github.com/WordPress/gutenberg/pull/10439\n *\n * @deprecated since 4.0. The `node` source should not be used, and can be\n * replaced by the `html` source.\n *\n * @private\n */\nexport default {\n\tisNodeOfType,\n\tfromDOM,\n\ttoHTML,\n\tmatcher,\n};\n","/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { renderToString } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport * as node from './node';\n\n/**\n * A representation of a block's rich text value.\n *\n * @typedef {WPBlockNode[]} WPBlockChildren\n */\n\n/**\n * Given block children, returns a serialize-capable WordPress element.\n *\n * @param {WPBlockChildren} children Block children object to convert.\n *\n * @return {WPElement} A serialize-capable element.\n */\nexport function getSerializeCapableElement( children ) {\n\t// The fact that block children are compatible with the element serializer is\n\t// merely an implementation detail that currently serves to be true, but\n\t// should not be mistaken as being a guarantee on the external API. The\n\t// public API only offers guarantees to work with strings (toHTML) and DOM\n\t// elements (fromDOM), and should provide utilities to manipulate the value\n\t// rather than expect consumers to inspect or construct its shape (concat).\n\treturn children;\n}\n\n/**\n * Given block children, returns an array of block nodes.\n *\n * @param {WPBlockChildren} children Block children object to convert.\n *\n * @return {Array<WPBlockNode>} An array of individual block nodes.\n */\nfunction getChildrenArray( children ) {\n\t// The fact that block children are compatible with the element serializer\n\t// is merely an implementation detail that currently serves to be true, but\n\t// should not be mistaken as being a guarantee on the external API.\n\treturn children;\n}\n\n/**\n * Given two or more block nodes, returns a new block node representing a\n * concatenation of its values.\n *\n * @param {...WPBlockChildren} blockNodes Block nodes to concatenate.\n *\n * @return {WPBlockChildren} Concatenated block node.\n */\nexport function concat( ...blockNodes ) {\n\tconst result = [];\n\tfor ( let i = 0; i < blockNodes.length; i++ ) {\n\t\tconst blockNode = castArray( blockNodes[ i ] );\n\t\tfor ( let j = 0; j < blockNode.length; j++ ) {\n\t\t\tconst child = blockNode[ j ];\n\t\t\tconst canConcatToPreviousString =\n\t\t\t\ttypeof child === 'string' &&\n\t\t\t\ttypeof result[ result.length - 1 ] === 'string';\n\n\t\t\tif ( canConcatToPreviousString ) {\n\t\t\t\tresult[ result.length - 1 ] += child;\n\t\t\t} else {\n\t\t\t\tresult.push( child );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Given an iterable set of DOM nodes, returns equivalent block children.\n * Ignores any non-element/text nodes included in set.\n *\n * @param {Iterable.<Node>} domNodes Iterable set of DOM nodes to convert.\n *\n * @return {WPBlockChildren} Block children equivalent to DOM nodes.\n */\nexport function fromDOM( domNodes ) {\n\tconst result = [];\n\tfor ( let i = 0; i < domNodes.length; i++ ) {\n\t\ttry {\n\t\t\tresult.push( node.fromDOM( domNodes[ i ] ) );\n\t\t} catch ( error ) {\n\t\t\t// Simply ignore if DOM node could not be converted.\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Given a block node, returns its HTML string representation.\n *\n * @param {WPBlockChildren} children Block node(s) to convert to string.\n *\n * @return {string} String HTML representation of block node.\n */\nexport function toHTML( children ) {\n\tconst element = getSerializeCapableElement( children );\n\n\treturn renderToString( element );\n}\n\n/**\n * Given a selector, returns an hpq matcher generating a WPBlockChildren value\n * matching the selector result.\n *\n * @param {string} selector DOM selector.\n *\n * @return {Function} hpq matcher.\n */\nexport function matcher( selector ) {\n\treturn ( domNode ) => {\n\t\tlet match = domNode;\n\n\t\tif ( selector ) {\n\t\t\tmatch = domNode.querySelector( selector );\n\t\t}\n\n\t\tif ( match ) {\n\t\t\treturn fromDOM( match.childNodes );\n\t\t}\n\n\t\treturn [];\n\t};\n}\n\n/**\n * Object of utility functions used in managing block attribute values of\n * source `children`.\n *\n * @see https://github.com/WordPress/gutenberg/pull/10439\n *\n * @deprecated since 4.0. The `children` source should not be used, and can be\n * replaced by the `html` source.\n *\n * @private\n */\nexport default {\n\tconcat,\n\tgetChildrenArray,\n\tfromDOM,\n\ttoHTML,\n\tmatcher,\n};\n","/**\n * External dependencies\n */\nimport { parse as hpqParse } from 'hpq';\nimport { flow, mapValues, castArray } from 'lodash';\nimport memoize from 'memize';\n\n/**\n * WordPress dependencies\n */\nimport { applyFilters } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { attr, html, text, query, node, children, prop } from '../matchers';\nimport { normalizeBlockType } from '../utils';\n\n/**\n * Higher-order hpq matcher which enhances an attribute matcher to return true\n * or false depending on whether the original matcher returns undefined. This\n * is useful for boolean attributes (e.g. disabled) whose attribute values may\n * be technically falsey (empty string), though their mere presence should be\n * enough to infer as true.\n *\n * @param {Function} matcher Original hpq matcher.\n *\n * @return {Function} Enhanced hpq matcher.\n */\nexport const toBooleanAttributeMatcher = ( matcher ) =>\n\tflow( [\n\t\tmatcher,\n\t\t// Expected values from `attr( 'disabled' )`:\n\t\t//\n\t\t// <input>\n\t\t// - Value: `undefined`\n\t\t// - Transformed: `false`\n\t\t//\n\t\t// <input disabled>\n\t\t// - Value: `''`\n\t\t// - Transformed: `true`\n\t\t//\n\t\t// <input disabled=\"disabled\">\n\t\t// - Value: `'disabled'`\n\t\t// - Transformed: `true`\n\t\t( value ) => value !== undefined,\n\t] );\n\n/**\n * Returns true if value is of the given JSON schema type, or false otherwise.\n *\n * @see http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.25\n *\n * @param {*} value Value to test.\n * @param {string} type Type to test.\n *\n * @return {boolean} Whether value is of type.\n */\nexport function isOfType( value, type ) {\n\tswitch ( type ) {\n\t\tcase 'string':\n\t\t\treturn typeof value === 'string';\n\n\t\tcase 'boolean':\n\t\t\treturn typeof value === 'boolean';\n\n\t\tcase 'object':\n\t\t\treturn !! value && value.constructor === Object;\n\n\t\tcase 'null':\n\t\t\treturn value === null;\n\n\t\tcase 'array':\n\t\t\treturn Array.isArray( value );\n\n\t\tcase 'integer':\n\t\tcase 'number':\n\t\t\treturn typeof value === 'number';\n\t}\n\n\treturn true;\n}\n\n/**\n * Returns true if value is of an array of given JSON schema types, or false\n * otherwise.\n *\n * @see http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.25\n *\n * @param {*} value Value to test.\n * @param {string[]} types Types to test.\n *\n * @return {boolean} Whether value is of types.\n */\nexport function isOfTypes( value, types ) {\n\treturn types.some( ( type ) => isOfType( value, type ) );\n}\n\n/**\n * Given an attribute key, an attribute's schema, a block's raw content and the\n * commentAttributes returns the attribute value depending on its source\n * definition of the given attribute key.\n *\n * @param {string} attributeKey Attribute key.\n * @param {Object} attributeSchema Attribute's schema.\n * @param {string|Node} innerHTML Block's raw content.\n * @param {Object} commentAttributes Block's comment attributes.\n *\n * @return {*} Attribute value.\n */\nexport function getBlockAttribute(\n\tattributeKey,\n\tattributeSchema,\n\tinnerHTML,\n\tcommentAttributes\n) {\n\tlet value;\n\n\tswitch ( attributeSchema.source ) {\n\t\t// An undefined source means that it's an attribute serialized to the\n\t\t// block's \"comment\".\n\t\tcase undefined:\n\t\t\tvalue = commentAttributes\n\t\t\t\t? commentAttributes[ attributeKey ]\n\t\t\t\t: undefined;\n\t\t\tbreak;\n\t\tcase 'attribute':\n\t\tcase 'property':\n\t\tcase 'html':\n\t\tcase 'text':\n\t\tcase 'children':\n\t\tcase 'node':\n\t\tcase 'query':\n\t\tcase 'tag':\n\t\t\tvalue = parseWithAttributeSchema( innerHTML, attributeSchema );\n\t\t\tbreak;\n\t}\n\n\tif (\n\t\t! isValidByType( value, attributeSchema.type ) ||\n\t\t! isValidByEnum( value, attributeSchema.enum )\n\t) {\n\t\t// Reject the value if it is not valid. Reverting to the undefined\n\t\t// value ensures the default is respected, if applicable.\n\t\tvalue = undefined;\n\t}\n\n\tif ( value === undefined ) {\n\t\tvalue = attributeSchema.default;\n\t}\n\n\treturn value;\n}\n\n/**\n * Returns true if value is valid per the given block attribute schema type\n * definition, or false otherwise.\n *\n * @see https://json-schema.org/latest/json-schema-validation.html#rfc.section.6.1.1\n *\n * @param {*} value Value to test.\n * @param {?(Array<string>|string)} type Block attribute schema type.\n *\n * @return {boolean} Whether value is valid.\n */\nexport function isValidByType( value, type ) {\n\treturn type === undefined || isOfTypes( value, castArray( type ) );\n}\n\n/**\n * Returns true if value is valid per the given block attribute schema enum\n * definition, or false otherwise.\n *\n * @see https://json-schema.org/latest/json-schema-validation.html#rfc.section.6.1.2\n *\n * @param {*} value Value to test.\n * @param {?Array} enumSet Block attribute schema enum.\n *\n * @return {boolean} Whether value is valid.\n */\nexport function isValidByEnum( value, enumSet ) {\n\treturn ! Array.isArray( enumSet ) || enumSet.includes( value );\n}\n\n/**\n * Returns an hpq matcher given a source object.\n *\n * @param {Object} sourceConfig Attribute Source object.\n *\n * @return {Function} A hpq Matcher.\n */\nexport const matcherFromSource = memoize( ( sourceConfig ) => {\n\tswitch ( sourceConfig.source ) {\n\t\tcase 'attribute':\n\t\t\tlet matcher = attr( sourceConfig.selector, sourceConfig.attribute );\n\t\t\tif ( sourceConfig.type === 'boolean' ) {\n\t\t\t\tmatcher = toBooleanAttributeMatcher( matcher );\n\t\t\t}\n\n\t\t\treturn matcher;\n\t\tcase 'html':\n\t\t\treturn html( sourceConfig.selector, sourceConfig.multiline );\n\t\tcase 'text':\n\t\t\treturn text( sourceConfig.selector );\n\t\tcase 'children':\n\t\t\treturn children( sourceConfig.selector );\n\t\tcase 'node':\n\t\t\treturn node( sourceConfig.selector );\n\t\tcase 'query':\n\t\t\tconst subMatchers = mapValues(\n\t\t\t\tsourceConfig.query,\n\t\t\t\tmatcherFromSource\n\t\t\t);\n\t\t\treturn query( sourceConfig.selector, subMatchers );\n\t\tcase 'tag':\n\t\t\treturn flow( [\n\t\t\t\tprop( sourceConfig.selector, 'nodeName' ),\n\t\t\t\t( nodeName ) =>\n\t\t\t\t\tnodeName ? nodeName.toLowerCase() : undefined,\n\t\t\t] );\n\t\tdefault:\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( `Unknown source type \"${ sourceConfig.source }\"` );\n\t}\n} );\n\n/**\n * Parse a HTML string into DOM tree.\n *\n * @param {string|Node} innerHTML HTML string or already parsed DOM node.\n *\n * @return {Node} Parsed DOM node.\n */\nfunction parseHtml( innerHTML ) {\n\treturn hpqParse( innerHTML, ( h ) => h );\n}\n\n/**\n * Given a block's raw content and an attribute's schema returns the attribute's\n * value depending on its source.\n *\n * @param {string|Node} innerHTML Block's raw content.\n * @param {Object} attributeSchema Attribute's schema.\n *\n * @return {*} Attribute value.\n */\nexport function parseWithAttributeSchema( innerHTML, attributeSchema ) {\n\treturn matcherFromSource( attributeSchema )( parseHtml( innerHTML ) );\n}\n\n/**\n * Returns the block attributes of a registered block node given its type.\n *\n * @param {string|Object} blockTypeOrName Block type or name.\n * @param {string|Node} innerHTML Raw block content.\n * @param {?Object} attributes Known block attributes (from delimiters).\n *\n * @return {Object} All block attributes.\n */\nexport function getBlockAttributes(\n\tblockTypeOrName,\n\tinnerHTML,\n\tattributes = {}\n) {\n\tconst doc = parseHtml( innerHTML );\n\tconst blockType = normalizeBlockType( blockTypeOrName );\n\n\tconst blockAttributes = mapValues( blockType.attributes, ( schema, key ) =>\n\t\tgetBlockAttribute( key, schema, doc, attributes )\n\t);\n\n\treturn applyFilters(\n\t\t'blocks.getBlockAttributes',\n\t\tblockAttributes,\n\t\tblockType,\n\t\tinnerHTML,\n\t\tattributes\n\t);\n}\n","/**\n * External dependencies\n */\nexport { attr, prop, text, query } from 'hpq';\n\n/**\n * Internal dependencies\n */\nexport { matcher as node } from './node';\nexport { matcher as children } from './children';\n\nexport function html( selector, multilineTag ) {\n\treturn ( domNode ) => {\n\t\tlet match = domNode;\n\n\t\tif ( selector ) {\n\t\t\tmatch = domNode.querySelector( selector );\n\t\t}\n\n\t\tif ( ! match ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif ( multilineTag ) {\n\t\t\tlet value = '';\n\t\t\tconst length = match.children.length;\n\n\t\t\tfor ( let index = 0; index < length; index++ ) {\n\t\t\t\tconst child = match.children[ index ];\n\n\t\t\t\tif ( child.nodeName.toLowerCase() !== multilineTag ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvalue += child.outerHTML;\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\treturn match.innerHTML;\n\t};\n}\n","/**\n * Internal dependencies\n */\nimport { hasBlockSupport } from '../registration';\nimport { getSaveContent } from '../serializer';\nimport { parseWithAttributeSchema } from './get-block-attributes';\n\nconst CLASS_ATTR_SCHEMA = {\n\ttype: 'string',\n\tsource: 'attribute',\n\tselector: '[data-custom-class-name] > *',\n\tattribute: 'class',\n};\n\n/**\n * Given an HTML string, returns an array of class names assigned to the root\n * element in the markup.\n *\n * @param {string} innerHTML Markup string from which to extract classes.\n *\n * @return {string[]} Array of class names assigned to the root element.\n */\nexport function getHTMLRootElementClasses( innerHTML ) {\n\tconst parsed = parseWithAttributeSchema(\n\t\t`<div data-custom-class-name>${ innerHTML }</div>`,\n\t\tCLASS_ATTR_SCHEMA\n\t);\n\n\treturn parsed ? parsed.trim().split( /\\s+/ ) : [];\n}\n\n/**\n * Given a parsed set of block attributes, if the block supports custom class\n * names and an unknown class (per the block's serialization behavior) is\n * found, the unknown classes are treated as custom classes. This prevents the\n * block from being considered as invalid.\n *\n * @param {Object} blockAttributes Original block attributes.\n * @param {Object} blockType Block type settings.\n * @param {string} innerHTML Original block markup.\n *\n * @return {Object} Filtered block attributes.\n */\nexport function fixCustomClassname( blockAttributes, blockType, innerHTML ) {\n\tif ( hasBlockSupport( blockType, 'customClassName', true ) ) {\n\t\t// To determine difference, serialize block given the known set of\n\t\t// attributes, with the exception of `className`. This will determine\n\t\t// the default set of classes. From there, any difference in innerHTML\n\t\t// can be considered as custom classes.\n\t\tconst { className: omittedClassName, ...attributesSansClassName } =\n\t\t\tblockAttributes;\n\t\tconst serialized = getSaveContent( blockType, attributesSansClassName );\n\t\tconst defaultClasses = getHTMLRootElementClasses( serialized );\n\t\tconst actualClasses = getHTMLRootElementClasses( innerHTML );\n\n\t\tconst customClasses = actualClasses.filter(\n\t\t\t( className ) => ! defaultClasses.includes( className )\n\t\t);\n\n\t\tif ( customClasses.length ) {\n\t\t\tblockAttributes.className = customClasses.join( ' ' );\n\t\t} else if ( serialized ) {\n\t\t\tdelete blockAttributes.className;\n\t\t}\n\t}\n\n\treturn blockAttributes;\n}\n","/**\n * Internal dependencies\n */\nimport { fixCustomClassname } from './fix-custom-classname';\n\n/**\n * Attempts to fix block invalidation by applying build-in validation fixes\n * like moving all extra classNames to the className attribute.\n *\n * @param {WPBlock} block block object.\n * @param {import('../registration').WPBlockType} blockType Block type. This is normalize not necessary and\n * can be inferred from the block name,\n * but it's here for performance reasons.\n *\n * @return {WPBlock} Fixed block object\n */\nexport function applyBuiltInValidationFixes( block, blockType ) {\n\tconst updatedBlockAttributes = fixCustomClassname(\n\t\tblock.attributes,\n\t\tblockType,\n\t\tblock.originalContent\n\t);\n\treturn {\n\t\t...block,\n\t\tattributes: updatedBlockAttributes,\n\t};\n}\n","/**\n * External dependencies\n */\nimport { castArray } from 'lodash';\n\n/**\n * Internal dependencies\n */\nimport { DEPRECATED_ENTRY_KEYS } from '../constants';\nimport { validateBlock } from '../validation';\nimport { getBlockAttributes } from './get-block-attributes';\nimport { applyBuiltInValidationFixes } from './apply-built-in-validation-fixes';\nimport { omit } from '../utils';\n\n/**\n * Function that takes no arguments and always returns false.\n *\n * @return {boolean} Always returns false.\n */\nfunction stubFalse() {\n\treturn false;\n}\n\n/**\n * Given a block object, returns a new copy of the block with any applicable\n * deprecated migrations applied, or the original block if it was both valid\n * and no eligible migrations exist.\n *\n * @param {import(\".\").WPBlock} block Parsed and invalid block object.\n * @param {import(\".\").WPRawBlock} rawBlock Raw block object.\n * @param {import('../registration').WPBlockType} blockType Block type. This is normalize not necessary and\n * can be inferred from the block name,\n * but it's here for performance reasons.\n *\n * @return {import(\".\").WPBlock} Migrated block object.\n */\nexport function applyBlockDeprecatedVersions( block, rawBlock, blockType ) {\n\tconst parsedAttributes = rawBlock.attrs;\n\tconst { deprecated: deprecatedDefinitions } = blockType;\n\t// Bail early if there are no registered deprecations to be handled.\n\tif ( ! deprecatedDefinitions || ! deprecatedDefinitions.length ) {\n\t\treturn block;\n\t}\n\n\t// By design, blocks lack any sort of version tracking. Instead, to process\n\t// outdated content the system operates a queue out of all the defined\n\t// attribute shapes and tries each definition until the input produces a\n\t// valid result. This mechanism seeks to avoid polluting the user-space with\n\t// machine-specific code. An invalid block is thus a block that could not be\n\t// matched successfully with any of the registered deprecation definitions.\n\tfor ( let i = 0; i < deprecatedDefinitions.length; i++ ) {\n\t\t// A block can opt into a migration even if the block is valid by\n\t\t// defining `isEligible` on its deprecation. If the block is both valid\n\t\t// and does not opt to migrate, skip.\n\t\tconst { isEligible = stubFalse } = deprecatedDefinitions[ i ];\n\t\tif (\n\t\t\tblock.isValid &&\n\t\t\t! isEligible( parsedAttributes, block.innerBlocks )\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Block type properties which could impact either serialization or\n\t\t// parsing are not considered in the deprecated block type by default,\n\t\t// and must be explicitly provided.\n\t\tconst deprecatedBlockType = Object.assign(\n\t\t\tomit( blockType, DEPRECATED_ENTRY_KEYS ),\n\t\t\tdeprecatedDefinitions[ i ]\n\t\t);\n\n\t\tlet migratedBlock = {\n\t\t\t...block,\n\t\t\tattributes: getBlockAttributes(\n\t\t\t\tdeprecatedBlockType,\n\t\t\t\tblock.originalContent,\n\t\t\t\tparsedAttributes\n\t\t\t),\n\t\t};\n\n\t\t// Ignore the deprecation if it produces a block which is not valid.\n\t\tlet [ isValid ] = validateBlock( migratedBlock, deprecatedBlockType );\n\n\t\t// If the migrated block is not valid initially, try the built-in fixes.\n\t\tif ( ! isValid ) {\n\t\t\tmigratedBlock = applyBuiltInValidationFixes(\n\t\t\t\tmigratedBlock,\n\t\t\t\tdeprecatedBlockType\n\t\t\t);\n\t\t\t[ isValid ] = validateBlock( migratedBlock, deprecatedBlockType );\n\t\t}\n\n\t\t// An invalid block does not imply incorrect HTML but the fact block\n\t\t// source information could be lost on re-serialization.\n\t\tif ( ! isValid ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet migratedInnerBlocks = migratedBlock.innerBlocks;\n\t\tlet migratedAttributes = migratedBlock.attributes;\n\n\t\t// A block may provide custom behavior to assign new attributes and/or\n\t\t// inner blocks.\n\t\tconst { migrate } = deprecatedBlockType;\n\t\tif ( migrate ) {\n\t\t\t[\n\t\t\t\tmigratedAttributes = parsedAttributes,\n\t\t\t\tmigratedInnerBlocks = block.innerBlocks,\n\t\t\t] = castArray( migrate( migratedAttributes, block.innerBlocks ) );\n\t\t}\n\n\t\tblock = {\n\t\t\t...block,\n\t\t\tattributes: migratedAttributes,\n\t\t\tinnerBlocks: migratedInnerBlocks,\n\t\t\tisValid: true,\n\t\t\tvalidationIssues: [],\n\t\t};\n\t}\n\n\treturn block;\n}\n","/**\n * WordPress dependencies\n */\nimport { parse as grammarParse } from '@wordpress/block-serialization-default-parser';\nimport { autop } from '@wordpress/autop';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFreeformContentHandlerName,\n\tgetUnregisteredTypeHandlerName,\n\tgetBlockType,\n} from '../registration';\nimport { getSaveContent } from '../serializer';\nimport { validateBlock } from '../validation';\nimport { createBlock } from '../factory';\nimport { convertLegacyBlockNameAndAttributes } from './convert-legacy-block';\nimport { serializeRawBlock } from './serialize-raw-block';\nimport { getBlockAttributes } from './get-block-attributes';\nimport { applyBlockDeprecatedVersions } from './apply-block-deprecated-versions';\nimport { applyBuiltInValidationFixes } from './apply-built-in-validation-fixes';\n\n/**\n * The raw structure of a block includes its attributes, inner\n * blocks, and inner HTML. It is important to distinguish inner blocks from\n * the HTML content of the block as only the latter is relevant for block\n * validation and edit operations.\n *\n * @typedef WPRawBlock\n *\n * @property {string=} blockName Block name\n * @property {Object=} attrs Block raw or comment attributes.\n * @property {string} innerHTML HTML content of the block.\n * @property {(string|null)[]} innerContent Content without inner blocks.\n * @property {WPRawBlock[]} innerBlocks Inner Blocks.\n */\n\n/**\n * Fully parsed block object.\n *\n * @typedef WPBlock\n *\n * @property {string} name Block name\n * @property {Object} attributes Block raw or comment attributes.\n * @property {WPBlock[]} innerBlocks Inner Blocks.\n * @property {string} originalContent Original content of the block before validation fixes.\n * @property {boolean} isValid Whether the block is valid.\n * @property {Object[]} validationIssues Validation issues.\n * @property {WPRawBlock} [__unstableBlockSource] Un-processed original copy of block if created through parser.\n */\n\n/**\n * @typedef {Object} ParseOptions\n * @property {boolean?} __unstableSkipMigrationLogs If a block is migrated from a deprecated version, skip logging the migration details.\n * @property {boolean?} __unstableSkipAutop Whether to skip autop when processing freeform content.\n */\n\n/**\n * Convert legacy blocks to their canonical form. This function is used\n * both in the parser level for previous content and to convert such blocks\n * used in Custom Post Types templates.\n *\n * @param {WPRawBlock} rawBlock\n *\n * @return {WPRawBlock} The block's name and attributes, changed accordingly if a match was found\n */\nfunction convertLegacyBlocks( rawBlock ) {\n\tconst [ correctName, correctedAttributes ] =\n\t\tconvertLegacyBlockNameAndAttributes(\n\t\t\trawBlock.blockName,\n\t\t\trawBlock.attrs\n\t\t);\n\treturn {\n\t\t...rawBlock,\n\t\tblockName: correctName,\n\t\tattrs: correctedAttributes,\n\t};\n}\n\n/**\n * Normalize the raw block by applying the fallback block name if none given,\n * sanitize the parsed HTML...\n *\n * @param {WPRawBlock} rawBlock The raw block object.\n * @param {ParseOptions?} options Extra options for handling block parsing.\n *\n * @return {WPRawBlock} The normalized block object.\n */\nexport function normalizeRawBlock( rawBlock, options ) {\n\tconst fallbackBlockName = getFreeformContentHandlerName();\n\n\t// If the grammar parsing don't produce any block name, use the freeform block.\n\tconst rawBlockName = rawBlock.blockName || getFreeformContentHandlerName();\n\tconst rawAttributes = rawBlock.attrs || {};\n\tconst rawInnerBlocks = rawBlock.innerBlocks || [];\n\tlet rawInnerHTML = rawBlock.innerHTML.trim();\n\n\t// Fallback content may be upgraded from classic content expecting implicit\n\t// automatic paragraphs, so preserve them. Assumes wpautop is idempotent,\n\t// meaning there are no negative consequences to repeated autop calls.\n\tif (\n\t\trawBlockName === fallbackBlockName &&\n\t\t! options?.__unstableSkipAutop\n\t) {\n\t\trawInnerHTML = autop( rawInnerHTML ).trim();\n\t}\n\n\treturn {\n\t\t...rawBlock,\n\t\tblockName: rawBlockName,\n\t\tattrs: rawAttributes,\n\t\tinnerHTML: rawInnerHTML,\n\t\tinnerBlocks: rawInnerBlocks,\n\t};\n}\n\n/**\n * Uses the \"unregistered blockType\" to create a block object.\n *\n * @param {WPRawBlock} rawBlock block.\n *\n * @return {WPRawBlock} The unregistered block object.\n */\nfunction createMissingBlockType( rawBlock ) {\n\tconst unregisteredFallbackBlock =\n\t\tgetUnregisteredTypeHandlerName() || getFreeformContentHandlerName();\n\n\t// Preserve undelimited content for use by the unregistered type\n\t// handler. A block node's `innerHTML` isn't enough, as that field only\n\t// carries the block's own HTML and not its nested blocks.\n\tconst originalUndelimitedContent = serializeRawBlock( rawBlock, {\n\t\tisCommentDelimited: false,\n\t} );\n\n\t// Preserve full block content for use by the unregistered type\n\t// handler, block boundaries included.\n\tconst originalContent = serializeRawBlock( rawBlock, {\n\t\tisCommentDelimited: true,\n\t} );\n\n\treturn {\n\t\tblockName: unregisteredFallbackBlock,\n\t\tattrs: {\n\t\t\toriginalName: rawBlock.blockName,\n\t\t\toriginalContent,\n\t\t\toriginalUndelimitedContent,\n\t\t},\n\t\tinnerHTML: rawBlock.blockName ? originalContent : rawBlock.innerHTML,\n\t\tinnerBlocks: rawBlock.innerBlocks,\n\t\tinnerContent: rawBlock.innerContent,\n\t};\n}\n\n/**\n * Validates a block and wraps with validation meta.\n *\n * The name here is regrettable but `validateBlock` is already taken.\n *\n * @param {WPBlock} unvalidatedBlock\n * @param {import('../registration').WPBlockType} blockType\n * @return {WPBlock} validated block, with auto-fixes if initially invalid\n */\nfunction applyBlockValidation( unvalidatedBlock, blockType ) {\n\t// Attempt to validate the block.\n\tconst [ isValid ] = validateBlock( unvalidatedBlock, blockType );\n\n\tif ( isValid ) {\n\t\treturn { ...unvalidatedBlock, isValid, validationIssues: [] };\n\t}\n\n\t// If the block is invalid, attempt some built-in fixes\n\t// like custom classNames handling.\n\tconst fixedBlock = applyBuiltInValidationFixes(\n\t\tunvalidatedBlock,\n\t\tblockType\n\t);\n\t// Attempt to validate the block once again after the built-in fixes.\n\tconst [ isFixedValid, validationIssues ] = validateBlock(\n\t\tunvalidatedBlock,\n\t\tblockType\n\t);\n\n\treturn { ...fixedBlock, isValid: isFixedValid, validationIssues };\n}\n\n/**\n * Given a raw block returned by grammar parsing, returns a fully parsed block.\n *\n * @param {WPRawBlock} rawBlock The raw block object.\n * @param {ParseOptions} options Extra options for handling block parsing.\n *\n * @return {WPBlock} Fully parsed block.\n */\nexport function parseRawBlock( rawBlock, options ) {\n\tlet normalizedBlock = normalizeRawBlock( rawBlock, options );\n\n\t// During the lifecycle of the project, we renamed some old blocks\n\t// and transformed others to new blocks. To avoid breaking existing content,\n\t// we added this function to properly parse the old content.\n\tnormalizedBlock = convertLegacyBlocks( normalizedBlock );\n\n\t// Try finding the type for known block name.\n\tlet blockType = getBlockType( normalizedBlock.blockName );\n\n\t// If not blockType is found for the specified name, fallback to the \"unregistedBlockType\".\n\tif ( ! blockType ) {\n\t\tnormalizedBlock = createMissingBlockType( normalizedBlock );\n\t\tblockType = getBlockType( normalizedBlock.blockName );\n\t}\n\n\t// If it's an empty freeform block or there's no blockType (no missing block handler)\n\t// Then, just ignore the block.\n\t// It might be a good idea to throw a warning here.\n\t// TODO: I'm unsure about the unregisteredFallbackBlock check,\n\t// it might ignore some dynamic unregistered third party blocks wrongly.\n\tconst isFallbackBlock =\n\t\tnormalizedBlock.blockName === getFreeformContentHandlerName() ||\n\t\tnormalizedBlock.blockName === getUnregisteredTypeHandlerName();\n\tif ( ! blockType || ( ! normalizedBlock.innerHTML && isFallbackBlock ) ) {\n\t\treturn;\n\t}\n\n\t// Parse inner blocks recursively.\n\tconst parsedInnerBlocks = normalizedBlock.innerBlocks\n\t\t.map( ( innerBlock ) => parseRawBlock( innerBlock, options ) )\n\t\t// See https://github.com/WordPress/gutenberg/pull/17164.\n\t\t.filter( ( innerBlock ) => !! innerBlock );\n\n\t// Get the fully parsed block.\n\tconst parsedBlock = createBlock(\n\t\tnormalizedBlock.blockName,\n\t\tgetBlockAttributes(\n\t\t\tblockType,\n\t\t\tnormalizedBlock.innerHTML,\n\t\t\tnormalizedBlock.attrs\n\t\t),\n\t\tparsedInnerBlocks\n\t);\n\tparsedBlock.originalContent = normalizedBlock.innerHTML;\n\n\tconst validatedBlock = applyBlockValidation( parsedBlock, blockType );\n\tconst { validationIssues } = validatedBlock;\n\n\t// Run the block deprecation and migrations.\n\t// This is performed on both invalid and valid blocks because\n\t// migration using the `migrate` functions should run even\n\t// if the output is deemed valid.\n\tconst updatedBlock = applyBlockDeprecatedVersions(\n\t\tvalidatedBlock,\n\t\tnormalizedBlock,\n\t\tblockType\n\t);\n\n\tif ( ! updatedBlock.isValid ) {\n\t\t// Preserve the original unprocessed version of the block\n\t\t// that we received (no fixes, no deprecations) so that\n\t\t// we can save it as close to exactly the same way as\n\t\t// we loaded it. This is important to avoid corruption\n\t\t// and data loss caused by block implementations trying\n\t\t// to process data that isn't fully recognized.\n\t\tupdatedBlock.__unstableBlockSource = rawBlock;\n\t}\n\n\tif (\n\t\t! validatedBlock.isValid &&\n\t\tupdatedBlock.isValid &&\n\t\t! options?.__unstableSkipMigrationLogs\n\t) {\n\t\t/* eslint-disable no-console */\n\t\tconsole.groupCollapsed( 'Updated Block: %s', blockType.name );\n\t\tconsole.info(\n\t\t\t'Block successfully updated for `%s` (%o).\\n\\nNew content generated by `save` function:\\n\\n%s\\n\\nContent retrieved from post body:\\n\\n%s',\n\t\t\tblockType.name,\n\t\t\tblockType,\n\t\t\tgetSaveContent( blockType, updatedBlock.attributes ),\n\t\t\tupdatedBlock.originalContent\n\t\t);\n\t\tconsole.groupEnd();\n\t\t/* eslint-enable no-console */\n\t} else if ( ! validatedBlock.isValid && ! updatedBlock.isValid ) {\n\t\tvalidationIssues.forEach( ( { log, args } ) => log( ...args ) );\n\t}\n\n\treturn updatedBlock;\n}\n\n/**\n * Utilizes an optimized token-driven parser based on the Gutenberg grammar spec\n * defined through a parsing expression grammar to take advantage of the regular\n * cadence provided by block delimiters -- composed syntactically through HTML\n * comments -- which, given a general HTML document as an input, returns a block\n * list array representation.\n *\n * This is a recursive-descent parser that scans linearly once through the input\n * document. Instead of directly recursing it utilizes a trampoline mechanism to\n * prevent stack overflow. This initial pass is mainly interested in separating\n * and isolating the blocks serialized in the document and manifestly not in the\n * content within the blocks.\n *\n * @see\n * https://developer.wordpress.org/block-editor/packages/packages-block-serialization-default-parser/\n *\n * @param {string} content The post content.\n * @param {ParseOptions} options Extra options for handling block parsing.\n *\n * @return {Array} Block list.\n */\nexport default function parse( content, options ) {\n\treturn grammarParse( content ).reduce( ( accumulator, rawBlock ) => {\n\t\tconst block = parseRawBlock( rawBlock, options );\n\t\tif ( block ) {\n\t\t\taccumulator.push( block );\n\t\t}\n\t\treturn accumulator;\n\t}, [] );\n}\n","/**\n * Internal dependencies\n */\nimport { getBlockTransforms } from '../factory';\n\nexport function getRawTransforms() {\n\treturn getBlockTransforms( 'from' )\n\t\t.filter( ( { type } ) => type === 'raw' )\n\t\t.map( ( transform ) => {\n\t\t\treturn transform.isMatch\n\t\t\t\t? transform\n\t\t\t\t: {\n\t\t\t\t\t\t...transform,\n\t\t\t\t\t\tisMatch: ( node ) =>\n\t\t\t\t\t\t\ttransform.selector &&\n\t\t\t\t\t\t\tnode.matches( transform.selector ),\n\t\t\t\t };\n\t\t} );\n}\n","/**\n * Internal dependencies\n */\nimport { createBlock, findTransform } from '../factory';\nimport { getBlockAttributes } from '../parser/get-block-attributes';\nimport { getRawTransforms } from './get-raw-transforms';\n\n/**\n * Converts HTML directly to blocks. Looks for a matching transform for each\n * top-level tag. The HTML should be filtered to not have any text between\n * top-level tags and formatted in a way that blocks can handle the HTML.\n *\n * @param {string} html HTML to convert.\n * @param {Function} handler The handler calling htmlToBlocks: either rawHandler\n * or pasteHandler.\n *\n * @return {Array} An array of blocks.\n */\nexport function htmlToBlocks( html, handler ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\n\tdoc.body.innerHTML = html;\n\n\treturn Array.from( doc.body.children ).flatMap( ( node ) => {\n\t\tconst rawTransform = findTransform(\n\t\t\tgetRawTransforms(),\n\t\t\t( { isMatch } ) => isMatch( node )\n\t\t);\n\n\t\tif ( ! rawTransform ) {\n\t\t\treturn createBlock(\n\t\t\t\t// Should not be hardcoded.\n\t\t\t\t'core/html',\n\t\t\t\tgetBlockAttributes( 'core/html', node.outerHTML )\n\t\t\t);\n\t\t}\n\n\t\tconst { transform, blockName } = rawTransform;\n\n\t\tif ( transform ) {\n\t\t\treturn transform( node, handler );\n\t\t}\n\n\t\treturn createBlock(\n\t\t\tblockName,\n\t\t\tgetBlockAttributes( blockName, node.outerHTML )\n\t\t);\n\t} );\n}\n","/**\n * WordPress dependencies\n */\nimport { isEmpty, isPhrasingContent } from '@wordpress/dom';\n\nexport default function normaliseBlocks( HTML ) {\n\tconst decuDoc = document.implementation.createHTMLDocument( '' );\n\tconst accuDoc = document.implementation.createHTMLDocument( '' );\n\n\tconst decu = decuDoc.body;\n\tconst accu = accuDoc.body;\n\n\tdecu.innerHTML = HTML;\n\n\twhile ( decu.firstChild ) {\n\t\tconst node = decu.firstChild;\n\n\t\t// Text nodes: wrap in a paragraph, or append to previous.\n\t\tif ( node.nodeType === node.TEXT_NODE ) {\n\t\t\tif ( isEmpty( node ) ) {\n\t\t\t\tdecu.removeChild( node );\n\t\t\t} else {\n\t\t\t\tif ( ! accu.lastChild || accu.lastChild.nodeName !== 'P' ) {\n\t\t\t\t\taccu.appendChild( accuDoc.createElement( 'P' ) );\n\t\t\t\t}\n\n\t\t\t\taccu.lastChild.appendChild( node );\n\t\t\t}\n\t\t\t// Element nodes.\n\t\t} else if ( node.nodeType === node.ELEMENT_NODE ) {\n\t\t\t// BR nodes: create a new paragraph on double, or append to previous.\n\t\t\tif ( node.nodeName === 'BR' ) {\n\t\t\t\tif ( node.nextSibling && node.nextSibling.nodeName === 'BR' ) {\n\t\t\t\t\taccu.appendChild( accuDoc.createElement( 'P' ) );\n\t\t\t\t\tdecu.removeChild( node.nextSibling );\n\t\t\t\t}\n\n\t\t\t\t// Don't append to an empty paragraph.\n\t\t\t\tif (\n\t\t\t\t\taccu.lastChild &&\n\t\t\t\t\taccu.lastChild.nodeName === 'P' &&\n\t\t\t\t\taccu.lastChild.hasChildNodes()\n\t\t\t\t) {\n\t\t\t\t\taccu.lastChild.appendChild( node );\n\t\t\t\t} else {\n\t\t\t\t\tdecu.removeChild( node );\n\t\t\t\t}\n\t\t\t} else if ( node.nodeName === 'P' ) {\n\t\t\t\t// Only append non-empty paragraph nodes.\n\t\t\t\tif ( isEmpty( node ) ) {\n\t\t\t\t\tdecu.removeChild( node );\n\t\t\t\t} else {\n\t\t\t\t\taccu.appendChild( node );\n\t\t\t\t}\n\t\t\t} else if ( isPhrasingContent( node ) ) {\n\t\t\t\tif ( ! accu.lastChild || accu.lastChild.nodeName !== 'P' ) {\n\t\t\t\t\taccu.appendChild( accuDoc.createElement( 'P' ) );\n\t\t\t\t}\n\t\t\t\taccu.lastChild.appendChild( node );\n\t\t\t} else {\n\t\t\t\taccu.appendChild( node );\n\t\t\t}\n\t\t} else {\n\t\t\tdecu.removeChild( node );\n\t\t}\n\t}\n\n\treturn accu.innerHTML;\n}\n","/**\n * WordPress dependencies\n */\nimport { remove, replace } from '@wordpress/dom';\n\n/**\n * Looks for `<!--nextpage-->` and `<!--more-->` comments and\n * replaces them with a custom element representing a future block.\n *\n * The custom element is a way to bypass the rest of the `raw-handling`\n * transforms, which would eliminate other kinds of node with which to carry\n * `<!--more-->`'s data: nodes with `data` attributes, empty paragraphs, etc.\n *\n * The custom element is then expected to be recognized by any registered\n * block's `raw` transform.\n *\n * @param {Node} node The node to be processed.\n * @param {Document} doc The document of the node.\n * @return {void}\n */\nexport default function specialCommentConverter( node, doc ) {\n\tif ( node.nodeType !== node.COMMENT_NODE ) {\n\t\treturn;\n\t}\n\n\tif ( node.nodeValue === 'nextpage' ) {\n\t\treplace( node, createNextpage( doc ) );\n\t\treturn;\n\t}\n\n\tif ( node.nodeValue.indexOf( 'more' ) === 0 ) {\n\t\tmoreCommentConverter( node, doc );\n\t}\n}\n\n/**\n * Convert `<!--more-->` as well as the `<!--more Some text-->` variant\n * and its `<!--noteaser-->` companion into the custom element\n * described in `specialCommentConverter()`.\n *\n * @param {Node} node The node to be processed.\n * @param {Document} doc The document of the node.\n * @return {void}\n */\nfunction moreCommentConverter( node, doc ) {\n\t// Grab any custom text in the comment.\n\tconst customText = node.nodeValue.slice( 4 ).trim();\n\n\t/*\n\t * When a `<!--more-->` comment is found, we need to look for any\n\t * `<!--noteaser-->` sibling, but it may not be a direct sibling\n\t * (whitespace typically lies in between)\n\t */\n\tlet sibling = node;\n\tlet noTeaser = false;\n\twhile ( ( sibling = sibling.nextSibling ) ) {\n\t\tif (\n\t\t\tsibling.nodeType === sibling.COMMENT_NODE &&\n\t\t\tsibling.nodeValue === 'noteaser'\n\t\t) {\n\t\t\tnoTeaser = true;\n\t\t\tremove( sibling );\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst moreBlock = createMore( customText, noTeaser, doc );\n\n\t// If our `<!--more-->` comment is in the middle of a paragraph, we should\n\t// split the paragraph in two and insert the more block in between. If not,\n\t// the more block will eventually end up being inserted after the paragraph.\n\tif (\n\t\t! node.parentNode ||\n\t\tnode.parentNode.nodeName !== 'P' ||\n\t\tnode.parentNode.childNodes.length === 1\n\t) {\n\t\treplace( node, moreBlock );\n\t} else {\n\t\tconst childNodes = Array.from( node.parentNode.childNodes );\n\t\tconst nodeIndex = childNodes.indexOf( node );\n\t\tconst wrapperNode = node.parentNode.parentNode || doc.body;\n\n\t\tconst paragraphBuilder = ( acc, child ) => {\n\t\t\tif ( ! acc ) {\n\t\t\t\tacc = doc.createElement( 'p' );\n\t\t\t}\n\n\t\t\tacc.appendChild( child );\n\n\t\t\treturn acc;\n\t\t};\n\n\t\t// Split the original parent node and insert our more block\n\t\t[\n\t\t\tchildNodes.slice( 0, nodeIndex ).reduce( paragraphBuilder, null ),\n\t\t\tmoreBlock,\n\t\t\tchildNodes.slice( nodeIndex + 1 ).reduce( paragraphBuilder, null ),\n\t\t].forEach(\n\t\t\t( element ) =>\n\t\t\t\telement && wrapperNode.insertBefore( element, node.parentNode )\n\t\t);\n\n\t\t// Remove the old parent paragraph\n\t\tremove( node.parentNode );\n\t}\n}\n\nfunction createMore( customText, noTeaser, doc ) {\n\tconst node = doc.createElement( 'wp-block' );\n\tnode.dataset.block = 'core/more';\n\tif ( customText ) {\n\t\tnode.dataset.customText = customText;\n\t}\n\tif ( noTeaser ) {\n\t\t// \"Boolean\" data attribute.\n\t\tnode.dataset.noTeaser = '';\n\t}\n\treturn node;\n}\n\nfunction createNextpage( doc ) {\n\tconst node = doc.createElement( 'wp-block' );\n\tnode.dataset.block = 'core/nextpage';\n\n\treturn node;\n}\n","/**\n * WordPress dependencies\n */\nimport { unwrap } from '@wordpress/dom';\n\nfunction isList( node ) {\n\treturn node.nodeName === 'OL' || node.nodeName === 'UL';\n}\n\nfunction shallowTextContent( element ) {\n\treturn Array.from( element.childNodes )\n\t\t.map( ( { nodeValue = '' } ) => nodeValue )\n\t\t.join( '' );\n}\n\nexport default function listReducer( node ) {\n\tif ( ! isList( node ) ) {\n\t\treturn;\n\t}\n\n\tconst list = node;\n\tconst prevElement = node.previousElementSibling;\n\n\t// Merge with previous list if:\n\t// * There is a previous list of the same type.\n\t// * There is only one list item.\n\tif (\n\t\tprevElement &&\n\t\tprevElement.nodeName === node.nodeName &&\n\t\tlist.children.length === 1\n\t) {\n\t\t// Move all child nodes, including any text nodes, if any.\n\t\twhile ( list.firstChild ) {\n\t\t\tprevElement.appendChild( list.firstChild );\n\t\t}\n\n\t\tlist.parentNode.removeChild( list );\n\t}\n\n\tconst parentElement = node.parentNode;\n\n\t// Nested list with empty parent item.\n\tif (\n\t\tparentElement &&\n\t\tparentElement.nodeName === 'LI' &&\n\t\tparentElement.children.length === 1 &&\n\t\t! /\\S/.test( shallowTextContent( parentElement ) )\n\t) {\n\t\tconst parentListItem = parentElement;\n\t\tconst prevListItem = parentListItem.previousElementSibling;\n\t\tconst parentList = parentListItem.parentNode;\n\n\t\tif ( prevListItem ) {\n\t\t\tprevListItem.appendChild( list );\n\t\t\tparentList.removeChild( parentListItem );\n\t\t} else {\n\t\t\tparentList.parentNode.insertBefore( list, parentList );\n\t\t\tparentList.parentNode.removeChild( parentList );\n\t\t}\n\t}\n\n\t// Invalid: OL/UL > OL/UL.\n\tif ( parentElement && isList( parentElement ) ) {\n\t\tconst prevListItem = node.previousElementSibling;\n\n\t\tif ( prevListItem ) {\n\t\t\tprevListItem.appendChild( node );\n\t\t} else {\n\t\t\tunwrap( node );\n\t\t}\n\t}\n}\n","/**\n * Internal dependencies\n */\nimport normaliseBlocks from './normalise-blocks';\n\nexport default function blockquoteNormaliser( node ) {\n\tif ( node.nodeName !== 'BLOCKQUOTE' ) {\n\t\treturn;\n\t}\n\n\tnode.innerHTML = normaliseBlocks( node.innerHTML );\n}\n","/**\n * WordPress dependencies\n */\nimport { isTextContent } from '@wordpress/dom';\n\n/**\n * Whether or not the given node is figure content.\n *\n * @param {Node} node The node to check.\n * @param {Object} schema The schema to use.\n *\n * @return {boolean} True if figure content, false if not.\n */\nfunction isFigureContent( node, schema ) {\n\tconst tag = node.nodeName.toLowerCase();\n\n\t// We are looking for tags that can be a child of the figure tag, excluding\n\t// `figcaption` and any phrasing content.\n\tif ( tag === 'figcaption' || isTextContent( node ) ) {\n\t\treturn false;\n\t}\n\n\treturn tag in ( schema?.figure?.children ?? {} );\n}\n\n/**\n * Whether or not the given node can have an anchor.\n *\n * @param {Node} node The node to check.\n * @param {Object} schema The schema to use.\n *\n * @return {boolean} True if it can, false if not.\n */\nfunction canHaveAnchor( node, schema ) {\n\tconst tag = node.nodeName.toLowerCase();\n\n\treturn tag in ( schema?.figure?.children?.a?.children ?? {} );\n}\n\n/**\n * Wraps the given element in a figure element.\n *\n * @param {Element} element The element to wrap.\n * @param {Element} beforeElement The element before which to place the figure.\n */\nfunction wrapFigureContent( element, beforeElement = element ) {\n\tconst figure = element.ownerDocument.createElement( 'figure' );\n\tbeforeElement.parentNode.insertBefore( figure, beforeElement );\n\tfigure.appendChild( element );\n}\n\n/**\n * This filter takes figure content out of paragraphs, wraps it in a figure\n * element, and moves any anchors with it if needed.\n *\n * @param {Node} node The node to filter.\n * @param {Document} doc The document of the node.\n * @param {Object} schema The schema to use.\n *\n * @return {void}\n */\nexport default function figureContentReducer( node, doc, schema ) {\n\tif ( ! isFigureContent( node, schema ) ) {\n\t\treturn;\n\t}\n\n\tlet nodeToInsert = node;\n\tconst parentNode = node.parentNode;\n\n\t// If the figure content can have an anchor and its parent is an anchor with\n\t// only the figure content, take the anchor out instead of just the content.\n\tif (\n\t\tcanHaveAnchor( node, schema ) &&\n\t\tparentNode.nodeName === 'A' &&\n\t\tparentNode.childNodes.length === 1\n\t) {\n\t\tnodeToInsert = node.parentNode;\n\t}\n\n\tconst wrapper = nodeToInsert.closest( 'p,div' );\n\n\t// If wrapped in a paragraph or div, only extract if it's aligned or if\n\t// there is no text content.\n\t// Otherwise, if directly at the root, wrap in a figure element.\n\tif ( wrapper ) {\n\t\t// In jsdom-jscore, 'node.classList' can be undefined.\n\t\t// In this case, default to extract as it offers a better UI experience on mobile.\n\t\tif ( ! node.classList ) {\n\t\t\twrapFigureContent( nodeToInsert, wrapper );\n\t\t} else if (\n\t\t\tnode.classList.contains( 'alignright' ) ||\n\t\t\tnode.classList.contains( 'alignleft' ) ||\n\t\t\tnode.classList.contains( 'aligncenter' ) ||\n\t\t\t! wrapper.textContent.trim()\n\t\t) {\n\t\t\twrapFigureContent( nodeToInsert, wrapper );\n\t\t}\n\t} else if ( nodeToInsert.parentNode.nodeName === 'BODY' ) {\n\t\twrapFigureContent( nodeToInsert );\n\t}\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"shortcode\"];","/**\n * WordPress dependencies\n */\nimport { regexp, next } from '@wordpress/shortcode';\n\n/**\n * Internal dependencies\n */\nimport { createBlock, getBlockTransforms, findTransform } from '../factory';\nimport { getBlockType } from '../registration';\nimport { getBlockAttributes } from '../parser/get-block-attributes';\nimport { applyBuiltInValidationFixes } from '../parser/apply-built-in-validation-fixes';\n\nconst castArray = ( maybeArray ) =>\n\tArray.isArray( maybeArray ) ? maybeArray : [ maybeArray ];\n\nfunction segmentHTMLToShortcodeBlock(\n\tHTML,\n\tlastIndex = 0,\n\texcludedBlockNames = []\n) {\n\t// Get all matches.\n\tconst transformsFrom = getBlockTransforms( 'from' );\n\n\tconst transformation = findTransform(\n\t\ttransformsFrom,\n\t\t( transform ) =>\n\t\t\texcludedBlockNames.indexOf( transform.blockName ) === -1 &&\n\t\t\ttransform.type === 'shortcode' &&\n\t\t\tcastArray( transform.tag ).some( ( tag ) =>\n\t\t\t\tregexp( tag ).test( HTML )\n\t\t\t)\n\t);\n\n\tif ( ! transformation ) {\n\t\treturn [ HTML ];\n\t}\n\n\tconst transformTags = castArray( transformation.tag );\n\tconst transformTag = transformTags.find( ( tag ) =>\n\t\tregexp( tag ).test( HTML )\n\t);\n\n\tlet match;\n\tconst previousIndex = lastIndex;\n\n\tif ( ( match = next( transformTag, HTML, lastIndex ) ) ) {\n\t\tlastIndex = match.index + match.content.length;\n\t\tconst beforeHTML = HTML.substr( 0, match.index );\n\t\tconst afterHTML = HTML.substr( lastIndex );\n\n\t\t// If the shortcode content does not contain HTML and the shortcode is\n\t\t// not on a new line (or in paragraph from Markdown converter),\n\t\t// consider the shortcode as inline text, and thus skip conversion for\n\t\t// this segment.\n\t\tif (\n\t\t\t! match.shortcode.content?.includes( '<' ) &&\n\t\t\t! (\n\t\t\t\t/(\\n|<p>)\\s*$/.test( beforeHTML ) &&\n\t\t\t\t/^\\s*(\\n|<\\/p>)/.test( afterHTML )\n\t\t\t)\n\t\t) {\n\t\t\treturn segmentHTMLToShortcodeBlock( HTML, lastIndex );\n\t\t}\n\n\t\t// If a transformation's `isMatch` predicate fails for the inbound\n\t\t// shortcode, try again by excluding the current block type.\n\t\t//\n\t\t// This is the only call to `segmentHTMLToShortcodeBlock` that should\n\t\t// ever carry over `excludedBlockNames`. Other calls in the module\n\t\t// should skip that argument as a way to reset the exclusion state, so\n\t\t// that one `isMatch` fail in an HTML fragment doesn't prevent any\n\t\t// valid matches in subsequent fragments.\n\t\tif (\n\t\t\ttransformation.isMatch &&\n\t\t\t! transformation.isMatch( match.shortcode.attrs )\n\t\t) {\n\t\t\treturn segmentHTMLToShortcodeBlock( HTML, previousIndex, [\n\t\t\t\t...excludedBlockNames,\n\t\t\t\ttransformation.blockName,\n\t\t\t] );\n\t\t}\n\n\t\tlet blocks = [];\n\t\tif ( typeof transformation.transform === 'function' ) {\n\t\t\t// Passing all of `match` as second argument is intentionally broad\n\t\t\t// but shouldn't be too relied upon.\n\t\t\t//\n\t\t\t// See: https://github.com/WordPress/gutenberg/pull/3610#discussion_r152546926\n\t\t\tblocks = [].concat(\n\t\t\t\ttransformation.transform( match.shortcode.attrs, match )\n\t\t\t);\n\n\t\t\t// Applying the built-in fixes can enhance the attributes with missing content like \"className\".\n\t\t\tblocks = blocks.map( ( block ) => {\n\t\t\t\tblock.originalContent = match.shortcode.content;\n\t\t\t\treturn applyBuiltInValidationFixes(\n\t\t\t\t\tblock,\n\t\t\t\t\tgetBlockType( block.name )\n\t\t\t\t);\n\t\t\t} );\n\t\t} else {\n\t\t\tconst attributes = Object.fromEntries(\n\t\t\t\tObject.entries( transformation.attributes )\n\t\t\t\t\t.filter( ( [ , schema ] ) => schema.shortcode )\n\t\t\t\t\t// Passing all of `match` as second argument is intentionally broad\n\t\t\t\t\t// but shouldn't be too relied upon.\n\t\t\t\t\t//\n\t\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/3610#discussion_r152546926\n\t\t\t\t\t.map( ( [ key, schema ] ) => [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tschema.shortcode( match.shortcode.attrs, match ),\n\t\t\t\t\t] )\n\t\t\t);\n\n\t\t\tconst blockType = getBlockType( transformation.blockName );\n\t\t\tif ( ! blockType ) {\n\t\t\t\treturn [ HTML ];\n\t\t\t}\n\n\t\t\tconst transformationBlockType = {\n\t\t\t\t...blockType,\n\t\t\t\tattributes: transformation.attributes,\n\t\t\t};\n\n\t\t\tlet block = createBlock(\n\t\t\t\ttransformation.blockName,\n\t\t\t\tgetBlockAttributes(\n\t\t\t\t\ttransformationBlockType,\n\t\t\t\t\tmatch.shortcode.content,\n\t\t\t\t\tattributes\n\t\t\t\t)\n\t\t\t);\n\n\t\t\t// Applying the built-in fixes can enhance the attributes with missing content like \"className\".\n\t\t\tblock.originalContent = match.shortcode.content;\n\t\t\tblock = applyBuiltInValidationFixes(\n\t\t\t\tblock,\n\t\t\t\ttransformationBlockType\n\t\t\t);\n\n\t\t\tblocks = [ block ];\n\t\t}\n\n\t\treturn [\n\t\t\t...segmentHTMLToShortcodeBlock( beforeHTML ),\n\t\t\t...blocks,\n\t\t\t...segmentHTMLToShortcodeBlock( afterHTML ),\n\t\t];\n\t}\n\n\treturn [ HTML ];\n}\n\nexport default segmentHTMLToShortcodeBlock;\n","/**\n * External dependencies\n */\nimport { mapValues, mergeWith } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { isPhrasingContent, getPhrasingContentSchema } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { hasBlockSupport } from '..';\nimport { getRawTransforms } from './get-raw-transforms';\n\nexport function getBlockContentSchemaFromTransforms( transforms, context ) {\n\tconst phrasingContentSchema = getPhrasingContentSchema( context );\n\tconst schemaArgs = { phrasingContentSchema, isPaste: context === 'paste' };\n\tconst schemas = transforms.map( ( { isMatch, blockName, schema } ) => {\n\t\tconst hasAnchorSupport = hasBlockSupport( blockName, 'anchor' );\n\n\t\tschema = typeof schema === 'function' ? schema( schemaArgs ) : schema;\n\n\t\t// If the block does not has anchor support and the transform does not\n\t\t// provides an isMatch we can return the schema right away.\n\t\tif ( ! hasAnchorSupport && ! isMatch ) {\n\t\t\treturn schema;\n\t\t}\n\n\t\treturn mapValues( schema, ( value ) => {\n\t\t\tlet attributes = value.attributes || [];\n\t\t\t// If the block supports the \"anchor\" functionality, it needs to keep its ID attribute.\n\t\t\tif ( hasAnchorSupport ) {\n\t\t\t\tattributes = [ ...attributes, 'id' ];\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\tattributes,\n\t\t\t\tisMatch: isMatch ? isMatch : undefined,\n\t\t\t};\n\t\t} );\n\t} );\n\n\treturn mergeWith( {}, ...schemas, ( objValue, srcValue, key ) => {\n\t\tswitch ( key ) {\n\t\t\tcase 'children': {\n\t\t\t\tif ( objValue === '*' || srcValue === '*' ) {\n\t\t\t\t\treturn '*';\n\t\t\t\t}\n\n\t\t\t\treturn { ...objValue, ...srcValue };\n\t\t\t}\n\t\t\tcase 'attributes':\n\t\t\tcase 'require': {\n\t\t\t\treturn [ ...( objValue || [] ), ...( srcValue || [] ) ];\n\t\t\t}\n\t\t\tcase 'isMatch': {\n\t\t\t\t// If one of the values being merge is undefined (matches everything),\n\t\t\t\t// the result of the merge will be undefined.\n\t\t\t\tif ( ! objValue || ! srcValue ) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\t// When merging two isMatch functions, the result is a new function\n\t\t\t\t// that returns if one of the source functions returns true.\n\t\t\t\treturn ( ...args ) => {\n\t\t\t\t\treturn objValue( ...args ) || srcValue( ...args );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t} );\n}\n\n/**\n * Gets the block content schema, which is extracted and merged from all\n * registered blocks with raw transfroms.\n *\n * @param {string} context Set to \"paste\" when in paste context, where the\n * schema is more strict.\n *\n * @return {Object} A complete block content schema.\n */\nexport function getBlockContentSchema( context ) {\n\treturn getBlockContentSchemaFromTransforms( getRawTransforms(), context );\n}\n\n/**\n * Checks whether HTML can be considered plain text. That is, it does not contain\n * any elements that are not line breaks.\n *\n * @param {string} HTML The HTML to check.\n *\n * @return {boolean} Whether the HTML can be considered plain text.\n */\nexport function isPlain( HTML ) {\n\treturn ! /<(?!br[ />])/i.test( HTML );\n}\n\n/**\n * Given node filters, deeply filters and mutates a NodeList.\n *\n * @param {NodeList} nodeList The nodeList to filter.\n * @param {Array} filters An array of functions that can mutate with the provided node.\n * @param {Document} doc The document of the nodeList.\n * @param {Object} schema The schema to use.\n */\nexport function deepFilterNodeList( nodeList, filters, doc, schema ) {\n\tArray.from( nodeList ).forEach( ( node ) => {\n\t\tdeepFilterNodeList( node.childNodes, filters, doc, schema );\n\n\t\tfilters.forEach( ( item ) => {\n\t\t\t// Make sure the node is still attached to the document.\n\t\t\tif ( ! doc.contains( node ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titem( node, doc, schema );\n\t\t} );\n\t} );\n}\n\n/**\n * Given node filters, deeply filters HTML tags.\n * Filters from the deepest nodes to the top.\n *\n * @param {string} HTML The HTML to filter.\n * @param {Array} filters An array of functions that can mutate with the provided node.\n * @param {Object} schema The schema to use.\n *\n * @return {string} The filtered HTML.\n */\nexport function deepFilterHTML( HTML, filters = [], schema ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\n\tdoc.body.innerHTML = HTML;\n\n\tdeepFilterNodeList( doc.body.childNodes, filters, doc, schema );\n\n\treturn doc.body.innerHTML;\n}\n\n/**\n * Gets a sibling within text-level context.\n *\n * @param {Element} node The subject node.\n * @param {string} which \"next\" or \"previous\".\n */\nexport function getSibling( node, which ) {\n\tconst sibling = node[ `${ which }Sibling` ];\n\n\tif ( sibling && isPhrasingContent( sibling ) ) {\n\t\treturn sibling;\n\t}\n\n\tconst { parentNode } = node;\n\n\tif ( ! parentNode || ! isPhrasingContent( parentNode ) ) {\n\t\treturn;\n\t}\n\n\treturn getSibling( parentNode, which );\n}\n","/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { getPhrasingContentSchema } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { htmlToBlocks } from './html-to-blocks';\nimport parse from '../parser';\nimport normaliseBlocks from './normalise-blocks';\nimport specialCommentConverter from './special-comment-converter';\nimport listReducer from './list-reducer';\nimport blockquoteNormaliser from './blockquote-normaliser';\nimport figureContentReducer from './figure-content-reducer';\nimport shortcodeConverter from './shortcode-converter';\nimport { deepFilterHTML, getBlockContentSchema } from './utils';\n\nexport { pasteHandler } from './paste-handler';\n\nexport function deprecatedGetPhrasingContentSchema( context ) {\n\tdeprecated( 'wp.blocks.getPhrasingContentSchema', {\n\t\tsince: '5.6',\n\t\talternative: 'wp.dom.getPhrasingContentSchema',\n\t} );\n\treturn getPhrasingContentSchema( context );\n}\n\n/**\n * Converts an HTML string to known blocks.\n *\n * @param {Object} $1\n * @param {string} $1.HTML The HTML to convert.\n *\n * @return {Array} A list of blocks.\n */\nexport function rawHandler( { HTML = '' } ) {\n\t// If we detect block delimiters, parse entirely as blocks.\n\tif ( HTML.indexOf( '<!-- wp:' ) !== -1 ) {\n\t\treturn parse( HTML );\n\t}\n\n\t// An array of HTML strings and block objects. The blocks replace matched\n\t// shortcodes.\n\tconst pieces = shortcodeConverter( HTML );\n\tconst blockContentSchema = getBlockContentSchema();\n\n\treturn pieces\n\t\t.map( ( piece ) => {\n\t\t\t// Already a block from shortcode.\n\t\t\tif ( typeof piece !== 'string' ) {\n\t\t\t\treturn piece;\n\t\t\t}\n\n\t\t\t// These filters are essential for some blocks to be able to transform\n\t\t\t// from raw HTML. These filters move around some content or add\n\t\t\t// additional tags, they do not remove any content.\n\t\t\tconst filters = [\n\t\t\t\t// Needed to adjust invalid lists.\n\t\t\t\tlistReducer,\n\t\t\t\t// Needed to create more and nextpage blocks.\n\t\t\t\tspecialCommentConverter,\n\t\t\t\t// Needed to create media blocks.\n\t\t\t\tfigureContentReducer,\n\t\t\t\t// Needed to create the quote block, which cannot handle text\n\t\t\t\t// without wrapper paragraphs.\n\t\t\t\tblockquoteNormaliser,\n\t\t\t];\n\n\t\t\tpiece = deepFilterHTML( piece, filters, blockContentSchema );\n\t\t\tpiece = normaliseBlocks( piece );\n\n\t\t\treturn htmlToBlocks( piece, rawHandler );\n\t\t} )\n\t\t.flat()\n\t\t.filter( Boolean );\n}\n","/**\n * WordPress dependencies\n */\nimport { remove } from '@wordpress/dom';\n\n/**\n * Looks for comments, and removes them.\n *\n * @param {Node} node The node to be processed.\n * @return {void}\n */\nexport default function commentRemover( node ) {\n\tif ( node.nodeType === node.COMMENT_NODE ) {\n\t\tremove( node );\n\t}\n}\n","/**\n * WordPress dependencies\n */\nimport { isTextContent } from '@wordpress/dom';\n\n/**\n * Checks if the given node should be considered inline content, optionally\n * depending on a context tag.\n *\n * @param {Node} node Node name.\n * @param {string} contextTag Tag name.\n *\n * @return {boolean} True if the node is inline content, false if nohe.\n */\nfunction isInline( node, contextTag ) {\n\tif ( isTextContent( node ) ) {\n\t\treturn true;\n\t}\n\n\tif ( ! contextTag ) {\n\t\treturn false;\n\t}\n\n\tconst tag = node.nodeName.toLowerCase();\n\tconst inlineAllowedTagGroups = [\n\t\t[ 'ul', 'li', 'ol' ],\n\t\t[ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ],\n\t];\n\n\treturn inlineAllowedTagGroups.some(\n\t\t( tagGroup ) =>\n\t\t\t[ tag, contextTag ].filter( ( t ) => ! tagGroup.includes( t ) )\n\t\t\t\t.length === 0\n\t);\n}\n\nfunction deepCheck( nodes, contextTag ) {\n\treturn nodes.every(\n\t\t( node ) =>\n\t\t\tisInline( node, contextTag ) &&\n\t\t\tdeepCheck( Array.from( node.children ), contextTag )\n\t);\n}\n\nfunction isDoubleBR( node ) {\n\treturn (\n\t\tnode.nodeName === 'BR' &&\n\t\tnode.previousSibling &&\n\t\tnode.previousSibling.nodeName === 'BR'\n\t);\n}\n\nexport default function isInlineContent( HTML, contextTag ) {\n\tconst doc = document.implementation.createHTMLDocument( '' );\n\n\tdoc.body.innerHTML = HTML;\n\n\tconst nodes = Array.from( doc.body.children );\n\n\treturn ! nodes.some( isDoubleBR ) && deepCheck( nodes, contextTag );\n}\n","/**\n * WordPress dependencies\n */\nimport { wrap, replaceTag } from '@wordpress/dom';\n\nexport default function phrasingContentReducer( node, doc ) {\n\t// In jsdom-jscore, 'node.style' can be null.\n\t// TODO: Explore fixing this by patching jsdom-jscore.\n\tif ( node.nodeName === 'SPAN' && node.style ) {\n\t\tconst {\n\t\t\tfontWeight,\n\t\t\tfontStyle,\n\t\t\ttextDecorationLine,\n\t\t\ttextDecoration,\n\t\t\tverticalAlign,\n\t\t} = node.style;\n\n\t\tif ( fontWeight === 'bold' || fontWeight === '700' ) {\n\t\t\twrap( doc.createElement( 'strong' ), node );\n\t\t}\n\n\t\tif ( fontStyle === 'italic' ) {\n\t\t\twrap( doc.createElement( 'em' ), node );\n\t\t}\n\n\t\t// Some DOM implementations (Safari, JSDom) don't support\n\t\t// style.textDecorationLine, so we check style.textDecoration as a\n\t\t// fallback.\n\t\tif (\n\t\t\ttextDecorationLine === 'line-through' ||\n\t\t\ttextDecoration.includes( 'line-through' )\n\t\t) {\n\t\t\twrap( doc.createElement( 's' ), node );\n\t\t}\n\n\t\tif ( verticalAlign === 'super' ) {\n\t\t\twrap( doc.createElement( 'sup' ), node );\n\t\t} else if ( verticalAlign === 'sub' ) {\n\t\t\twrap( doc.createElement( 'sub' ), node );\n\t\t}\n\t} else if ( node.nodeName === 'B' ) {\n\t\tnode = replaceTag( node, 'strong' );\n\t} else if ( node.nodeName === 'I' ) {\n\t\tnode = replaceTag( node, 'em' );\n\t} else if ( node.nodeName === 'A' ) {\n\t\t// In jsdom-jscore, 'node.target' can be null.\n\t\t// TODO: Explore fixing this by patching jsdom-jscore.\n\t\tif ( node.target && node.target.toLowerCase() === '_blank' ) {\n\t\t\tnode.rel = 'noreferrer noopener';\n\t\t} else {\n\t\t\tnode.removeAttribute( 'target' );\n\t\t\tnode.removeAttribute( 'rel' );\n\t\t}\n\n\t\t// Saves anchor elements name attribute as id\n\t\tif ( node.name && ! node.id ) {\n\t\t\tnode.id = node.name;\n\t\t}\n\n\t\t// Keeps id only if there is an internal link pointing to it\n\t\tif (\n\t\t\tnode.id &&\n\t\t\t! node.ownerDocument.querySelector( `[href=\"#${ node.id }\"]` )\n\t\t) {\n\t\t\tnode.removeAttribute( 'id' );\n\t\t}\n\t}\n}\n","export default function headRemover( node ) {\n\tif (\n\t\tnode.nodeName !== 'SCRIPT' &&\n\t\tnode.nodeName !== 'NOSCRIPT' &&\n\t\tnode.nodeName !== 'TEMPLATE' &&\n\t\tnode.nodeName !== 'STYLE'\n\t) {\n\t\treturn;\n\t}\n\n\tnode.parentNode.removeChild( node );\n}\n","/**\n * Browser dependencies\n */\nconst { parseInt } = window;\n\nfunction isList( node ) {\n\treturn node.nodeName === 'OL' || node.nodeName === 'UL';\n}\n\nexport default function msListConverter( node, doc ) {\n\tif ( node.nodeName !== 'P' ) {\n\t\treturn;\n\t}\n\n\tconst style = node.getAttribute( 'style' );\n\n\tif ( ! style ) {\n\t\treturn;\n\t}\n\n\t// Quick check.\n\tif ( style.indexOf( 'mso-list' ) === -1 ) {\n\t\treturn;\n\t}\n\n\tconst matches = /mso-list\\s*:[^;]+level([0-9]+)/i.exec( style );\n\n\tif ( ! matches ) {\n\t\treturn;\n\t}\n\n\tlet level = parseInt( matches[ 1 ], 10 ) - 1 || 0;\n\n\tconst prevNode = node.previousElementSibling;\n\n\t// Add new list if no previous.\n\tif ( ! prevNode || ! isList( prevNode ) ) {\n\t\t// See https://html.spec.whatwg.org/multipage/grouping-content.html#attr-ol-type.\n\t\tconst type = node.textContent.trim().slice( 0, 1 );\n\t\tconst isNumeric = /[1iIaA]/.test( type );\n\t\tconst newListNode = doc.createElement( isNumeric ? 'ol' : 'ul' );\n\n\t\tif ( isNumeric ) {\n\t\t\tnewListNode.setAttribute( 'type', type );\n\t\t}\n\n\t\tnode.parentNode.insertBefore( newListNode, node );\n\t}\n\n\tconst listNode = node.previousElementSibling;\n\tconst listType = listNode.nodeName;\n\tconst listItem = doc.createElement( 'li' );\n\n\tlet receivingNode = listNode;\n\n\t// Remove the first span with list info.\n\tnode.removeChild( node.firstChild );\n\n\t// Add content.\n\twhile ( node.firstChild ) {\n\t\tlistItem.appendChild( node.firstChild );\n\t}\n\n\t// Change pointer depending on indentation level.\n\twhile ( level-- ) {\n\t\treceivingNode = receivingNode.lastChild || receivingNode;\n\n\t\t// If it's a list, move pointer to the last item.\n\t\tif ( isList( receivingNode ) ) {\n\t\t\treceivingNode = receivingNode.lastChild || receivingNode;\n\t\t}\n\t}\n\n\t// Make sure we append to a list.\n\tif ( ! isList( receivingNode ) ) {\n\t\treceivingNode = receivingNode.appendChild(\n\t\t\tdoc.createElement( listType )\n\t\t);\n\t}\n\n\t// Append the list item to the list.\n\treceivingNode.appendChild( listItem );\n\n\t// Remove the wrapper paragraph.\n\tnode.parentNode.removeChild( node );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blob\"];","/**\n * WordPress dependencies\n */\nimport { createBlobURL } from '@wordpress/blob';\n\n/**\n * Browser dependencies\n */\nconst { atob, File } = window;\n\nexport default function imageCorrector( node ) {\n\tif ( node.nodeName !== 'IMG' ) {\n\t\treturn;\n\t}\n\n\tif ( node.src.indexOf( 'file:' ) === 0 ) {\n\t\tnode.src = '';\n\t}\n\n\t// This piece cannot be tested outside a browser env.\n\tif ( node.src.indexOf( 'data:' ) === 0 ) {\n\t\tconst [ properties, data ] = node.src.split( ',' );\n\t\tconst [ type ] = properties.slice( 5 ).split( ';' );\n\n\t\tif ( ! data || ! type ) {\n\t\t\tnode.src = '';\n\t\t\treturn;\n\t\t}\n\n\t\tlet decoded;\n\n\t\t// Can throw DOMException!\n\t\ttry {\n\t\t\tdecoded = atob( data );\n\t\t} catch ( e ) {\n\t\t\tnode.src = '';\n\t\t\treturn;\n\t\t}\n\n\t\tconst uint8Array = new Uint8Array( decoded.length );\n\n\t\tfor ( let i = 0; i < uint8Array.length; i++ ) {\n\t\t\tuint8Array[ i ] = decoded.charCodeAt( i );\n\t\t}\n\n\t\tconst name = type.replace( '/', '.' );\n\t\tconst file = new File( [ uint8Array ], name, { type } );\n\n\t\tnode.src = createBlobURL( file );\n\t}\n\n\t// Remove trackers and hardly visible images.\n\tif ( node.height === 1 || node.width === 1 ) {\n\t\tnode.parentNode.removeChild( node );\n\t}\n}\n","/**\n * Internal dependencies\n */\nimport normaliseBlocks from './normalise-blocks';\n\nexport default function divNormaliser( node ) {\n\tif ( node.nodeName !== 'DIV' ) {\n\t\treturn;\n\t}\n\n\tnode.innerHTML = normaliseBlocks( node.innerHTML );\n}\n","/**\n * External dependencies\n */\nimport showdown from 'showdown';\n\n// Reuse the same showdown converter.\nconst converter = new showdown.Converter( {\n\tnoHeaderId: true,\n\ttables: true,\n\tliteralMidWordUnderscores: true,\n\tomitExtraWLInCodeBlocks: true,\n\tsimpleLineBreaks: true,\n\tstrikethrough: true,\n} );\n\n/**\n * Corrects the Slack Markdown variant of the code block.\n * If uncorrected, it will be converted to inline code.\n *\n * @see https://get.slack.help/hc/en-us/articles/202288908-how-can-i-add-formatting-to-my-messages-#code-blocks\n *\n * @param {string} text The potential Markdown text to correct.\n *\n * @return {string} The corrected Markdown.\n */\nfunction slackMarkdownVariantCorrector( text ) {\n\treturn text.replace(\n\t\t/((?:^|\\n)```)([^\\n`]+)(```(?:$|\\n))/,\n\t\t( match, p1, p2, p3 ) => `${ p1 }\\n${ p2 }\\n${ p3 }`\n\t);\n}\n\n/**\n * Converts a piece of text into HTML based on any Markdown present.\n * Also decodes any encoded HTML.\n *\n * @param {string} text The plain text to convert.\n *\n * @return {string} HTML.\n */\nexport default function markdownConverter( text ) {\n\treturn converter.makeHtml( slackMarkdownVariantCorrector( text ) );\n}\n","/**\n * Removes iframes.\n *\n * @param {Node} node The node to check.\n *\n * @return {void}\n */\nexport default function iframeRemover( node ) {\n\tif ( node.nodeName === 'IFRAME' ) {\n\t\tconst text = node.ownerDocument.createTextNode( node.src );\n\t\tnode.parentNode.replaceChild( text, node );\n\t}\n}\n","/**\n * WordPress dependencies\n */\nimport { unwrap } from '@wordpress/dom';\n\nexport default function googleDocsUIdRemover( node ) {\n\tif ( ! node.id || node.id.indexOf( 'docs-internal-guid-' ) !== 0 ) {\n\t\treturn;\n\t}\n\n\tunwrap( node );\n}\n","/**\n * Internal dependencies\n */\nimport { getSibling } from './utils';\n\nfunction isFormattingSpace( character ) {\n\treturn (\n\t\tcharacter === ' ' ||\n\t\tcharacter === '\\r' ||\n\t\tcharacter === '\\n' ||\n\t\tcharacter === '\\t'\n\t);\n}\n\n/**\n * Removes spacing that formats HTML.\n *\n * @see https://www.w3.org/TR/css-text-3/#white-space-processing\n *\n * @param {Node} node The node to be processed.\n * @return {void}\n */\nexport default function htmlFormattingRemover( node ) {\n\tif ( node.nodeType !== node.TEXT_NODE ) {\n\t\treturn;\n\t}\n\n\t// Ignore pre content. Note that this does not use Element#closest due to\n\t// a combination of (a) node may not be Element and (b) node.parentElement\n\t// does not have full support in all browsers (Internet Exporer).\n\t//\n\t// See: https://developer.mozilla.org/en-US/docs/Web/API/Node/parentElement#Browser_compatibility\n\n\t/** @type {Node?} */\n\tlet parent = node;\n\twhile ( ( parent = parent.parentNode ) ) {\n\t\tif (\n\t\t\tparent.nodeType === parent.ELEMENT_NODE &&\n\t\t\tparent.nodeName === 'PRE'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// First, replace any sequence of HTML formatting space with a single space.\n\tlet newData = node.data.replace( /[ \\r\\n\\t]+/g, ' ' );\n\n\t// Remove the leading space if the text element is at the start of a block,\n\t// is preceded by a line break element, or has a space in the previous\n\t// node.\n\tif ( newData[ 0 ] === ' ' ) {\n\t\tconst previousSibling = getSibling( node, 'previous' );\n\n\t\tif (\n\t\t\t! previousSibling ||\n\t\t\tpreviousSibling.nodeName === 'BR' ||\n\t\t\tpreviousSibling.textContent.slice( -1 ) === ' '\n\t\t) {\n\t\t\tnewData = newData.slice( 1 );\n\t\t}\n\t}\n\n\t// Remove the trailing space if the text element is at the end of a block,\n\t// is succeded by a line break element, or has a space in the next text\n\t// node.\n\tif ( newData[ newData.length - 1 ] === ' ' ) {\n\t\tconst nextSibling = getSibling( node, 'next' );\n\n\t\tif (\n\t\t\t! nextSibling ||\n\t\t\tnextSibling.nodeName === 'BR' ||\n\t\t\t( nextSibling.nodeType === nextSibling.TEXT_NODE &&\n\t\t\t\tisFormattingSpace( nextSibling.textContent[ 0 ] ) )\n\t\t) {\n\t\t\tnewData = newData.slice( 0, -1 );\n\t\t}\n\t}\n\n\t// If there's no data left, remove the node, so `previousSibling` stays\n\t// accurate. Otherwise, update the node data.\n\tif ( ! newData ) {\n\t\tnode.parentNode.removeChild( node );\n\t} else {\n\t\tnode.data = newData;\n\t}\n}\n","/**\n * Internal dependencies\n */\nimport { getSibling } from './utils';\n\n/**\n * Removes trailing br elements from text-level content.\n *\n * @param {Element} node Node to check.\n */\nexport default function brRemover( node ) {\n\tif ( node.nodeName !== 'BR' ) {\n\t\treturn;\n\t}\n\n\tif ( getSibling( node, 'next' ) ) {\n\t\treturn;\n\t}\n\n\tnode.parentNode.removeChild( node );\n}\n","/**\n * Removes empty paragraph elements.\n *\n * @param {Element} node Node to check.\n */\nexport default function emptyParagraphRemover( node ) {\n\tif ( node.nodeName !== 'P' ) {\n\t\treturn;\n\t}\n\n\tif ( node.hasChildNodes() ) {\n\t\treturn;\n\t}\n\n\tnode.parentNode.removeChild( node );\n}\n","/**\n * Replaces Slack paragraph markup with a double line break (later converted to\n * a proper paragraph).\n *\n * @param {Element} node Node to check.\n */\nexport default function slackParagraphCorrector( node ) {\n\tif ( node.nodeName !== 'SPAN' ) {\n\t\treturn;\n\t}\n\n\tif ( node.getAttribute( 'data-stringify-type' ) !== 'paragraph-break' ) {\n\t\treturn;\n\t}\n\n\tconst { parentNode } = node;\n\n\tparentNode.insertBefore( node.ownerDocument.createElement( 'br' ), node );\n\tparentNode.insertBefore( node.ownerDocument.createElement( 'br' ), node );\n\tparentNode.removeChild( node );\n}\n","/**\n * WordPress dependencies\n */\nimport { getPhrasingContentSchema, removeInvalidHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { htmlToBlocks } from './html-to-blocks';\nimport { hasBlockSupport } from '../registration';\nimport { getBlockInnerHTML } from '../serializer';\nimport parse from '../parser';\nimport normaliseBlocks from './normalise-blocks';\nimport specialCommentConverter from './special-comment-converter';\nimport commentRemover from './comment-remover';\nimport isInlineContent from './is-inline-content';\nimport phrasingContentReducer from './phrasing-content-reducer';\nimport headRemover from './head-remover';\nimport msListConverter from './ms-list-converter';\nimport listReducer from './list-reducer';\nimport imageCorrector from './image-corrector';\nimport blockquoteNormaliser from './blockquote-normaliser';\nimport divNormaliser from './div-normaliser';\nimport figureContentReducer from './figure-content-reducer';\nimport shortcodeConverter from './shortcode-converter';\nimport markdownConverter from './markdown-converter';\nimport iframeRemover from './iframe-remover';\nimport googleDocsUIDRemover from './google-docs-uid-remover';\nimport htmlFormattingRemover from './html-formatting-remover';\nimport brRemover from './br-remover';\nimport { deepFilterHTML, isPlain, getBlockContentSchema } from './utils';\nimport emptyParagraphRemover from './empty-paragraph-remover';\nimport slackParagraphCorrector from './slack-paragraph-corrector';\n\n/**\n * Browser dependencies\n */\nconst { console } = window;\n\n/**\n * Filters HTML to only contain phrasing content.\n *\n * @param {string} HTML The HTML to filter.\n * @param {boolean} preserveWhiteSpace Whether or not to preserve consequent white space.\n *\n * @return {string} HTML only containing phrasing content.\n */\nfunction filterInlineHTML( HTML, preserveWhiteSpace ) {\n\tHTML = deepFilterHTML( HTML, [\n\t\tgoogleDocsUIDRemover,\n\t\tphrasingContentReducer,\n\t\tcommentRemover,\n\t] );\n\tHTML = removeInvalidHTML( HTML, getPhrasingContentSchema( 'paste' ), {\n\t\tinline: true,\n\t} );\n\n\tif ( ! preserveWhiteSpace ) {\n\t\tHTML = deepFilterHTML( HTML, [ htmlFormattingRemover, brRemover ] );\n\t}\n\n\t// Allows us to ask for this information when we get a report.\n\tconsole.log( 'Processed inline HTML:\\n\\n', HTML );\n\n\treturn HTML;\n}\n\n/**\n * Converts an HTML string to known blocks. Strips everything else.\n *\n * @param {Object} options\n * @param {string} [options.HTML] The HTML to convert.\n * @param {string} [options.plainText] Plain text version.\n * @param {string} [options.mode] Handle content as blocks or inline content.\n * * 'AUTO': Decide based on the content passed.\n * * 'INLINE': Always handle as inline content, and return string.\n * * 'BLOCKS': Always handle as blocks, and return array of blocks.\n * @param {Array} [options.tagName] The tag into which content will be inserted.\n * @param {boolean} [options.preserveWhiteSpace] Whether or not to preserve consequent white space.\n *\n * @return {Array|string} A list of blocks or a string, depending on `handlerMode`.\n */\nexport function pasteHandler( {\n\tHTML = '',\n\tplainText = '',\n\tmode = 'AUTO',\n\ttagName,\n\tpreserveWhiteSpace,\n} ) {\n\t// First of all, strip any meta tags.\n\tHTML = HTML.replace( /<meta[^>]+>/g, '' );\n\t// Strip Windows markers.\n\tHTML = HTML.replace(\n\t\t/^\\s*<html[^>]*>\\s*<body[^>]*>(?:\\s*<!--\\s*StartFragment\\s*-->)?/i,\n\t\t''\n\t);\n\tHTML = HTML.replace(\n\t\t/(?:<!--\\s*EndFragment\\s*-->\\s*)?<\\/body>\\s*<\\/html>\\s*$/i,\n\t\t''\n\t);\n\n\t// If we detect block delimiters in HTML, parse entirely as blocks.\n\tif ( mode !== 'INLINE' ) {\n\t\t// Check plain text if there is no HTML.\n\t\tconst content = HTML ? HTML : plainText;\n\n\t\tif ( content.indexOf( '<!-- wp:' ) !== -1 ) {\n\t\t\treturn parse( content );\n\t\t}\n\t}\n\n\t// Normalize unicode to use composed characters.\n\t// This is unsupported in IE 11 but it's a nice-to-have feature, not mandatory.\n\t// Not normalizing the content will only affect older browsers and won't\n\t// entirely break the app.\n\t// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n\t// See: https://core.trac.wordpress.org/ticket/30130\n\t// See: https://github.com/WordPress/gutenberg/pull/6983#pullrequestreview-125151075\n\tif ( String.prototype.normalize ) {\n\t\tHTML = HTML.normalize();\n\t}\n\n\t// Parse Markdown (and encoded HTML) if:\n\t// * There is a plain text version.\n\t// * There is no HTML version, or it has no formatting.\n\tif ( plainText && ( ! HTML || isPlain( HTML ) ) ) {\n\t\tHTML = plainText;\n\n\t\t// The markdown converter (Showdown) trims whitespace.\n\t\tif ( ! /^\\s+$/.test( plainText ) ) {\n\t\t\tHTML = markdownConverter( HTML );\n\t\t}\n\n\t\t// Switch to inline mode if:\n\t\t// * The current mode is AUTO.\n\t\t// * The original plain text had no line breaks.\n\t\t// * The original plain text was not an HTML paragraph.\n\t\t// * The converted text is just a paragraph.\n\t\tif (\n\t\t\tmode === 'AUTO' &&\n\t\t\tplainText.indexOf( '\\n' ) === -1 &&\n\t\t\tplainText.indexOf( '<p>' ) !== 0 &&\n\t\t\tHTML.indexOf( '<p>' ) === 0\n\t\t) {\n\t\t\tmode = 'INLINE';\n\t\t}\n\t}\n\n\tif ( mode === 'INLINE' ) {\n\t\treturn filterInlineHTML( HTML, preserveWhiteSpace );\n\t}\n\n\t// Must be run before checking if it's inline content.\n\tHTML = deepFilterHTML( HTML, [ slackParagraphCorrector ] );\n\n\t// An array of HTML strings and block objects. The blocks replace matched\n\t// shortcodes.\n\tconst pieces = shortcodeConverter( HTML );\n\n\t// The call to shortcodeConverter will always return more than one element\n\t// if shortcodes are matched. The reason is when shortcodes are matched\n\t// empty HTML strings are included.\n\tconst hasShortcodes = pieces.length > 1;\n\n\tif (\n\t\tmode === 'AUTO' &&\n\t\t! hasShortcodes &&\n\t\tisInlineContent( HTML, tagName )\n\t) {\n\t\treturn filterInlineHTML( HTML, preserveWhiteSpace );\n\t}\n\n\tconst phrasingContentSchema = getPhrasingContentSchema( 'paste' );\n\tconst blockContentSchema = getBlockContentSchema( 'paste' );\n\n\tconst blocks = pieces\n\t\t.map( ( piece ) => {\n\t\t\t// Already a block from shortcode.\n\t\t\tif ( typeof piece !== 'string' ) {\n\t\t\t\treturn piece;\n\t\t\t}\n\n\t\t\tconst filters = [\n\t\t\t\tgoogleDocsUIDRemover,\n\t\t\t\tmsListConverter,\n\t\t\t\theadRemover,\n\t\t\t\tlistReducer,\n\t\t\t\timageCorrector,\n\t\t\t\tphrasingContentReducer,\n\t\t\t\tspecialCommentConverter,\n\t\t\t\tcommentRemover,\n\t\t\t\tiframeRemover,\n\t\t\t\tfigureContentReducer,\n\t\t\t\tblockquoteNormaliser,\n\t\t\t\tdivNormaliser,\n\t\t\t];\n\n\t\t\tconst schema = {\n\t\t\t\t...blockContentSchema,\n\t\t\t\t// Keep top-level phrasing content, normalised by `normaliseBlocks`.\n\t\t\t\t...phrasingContentSchema,\n\t\t\t};\n\n\t\t\tpiece = deepFilterHTML( piece, filters, blockContentSchema );\n\t\t\tpiece = removeInvalidHTML( piece, schema );\n\t\t\tpiece = normaliseBlocks( piece );\n\t\t\tpiece = deepFilterHTML(\n\t\t\t\tpiece,\n\t\t\t\t[ htmlFormattingRemover, brRemover, emptyParagraphRemover ],\n\t\t\t\tblockContentSchema\n\t\t\t);\n\n\t\t\t// Allows us to ask for this information when we get a report.\n\t\t\tconsole.log( 'Processed HTML piece:\\n\\n', piece );\n\n\t\t\treturn htmlToBlocks( piece, pasteHandler );\n\t\t} )\n\t\t.flat()\n\t\t.filter( Boolean );\n\n\t// If we're allowed to return inline content, and there is only one\n\t// inlineable block, and the original plain text content does not have any\n\t// line breaks, then treat it as inline paste.\n\tif (\n\t\tmode === 'AUTO' &&\n\t\tblocks.length === 1 &&\n\t\thasBlockSupport( blocks[ 0 ].name, '__unstablePasteTextInline', false )\n\t) {\n\t\tconst trimRegex = /^[\\n]+|[\\n]+$/g;\n\t\t// Don't catch line breaks at the start or end.\n\t\tconst trimmedPlainText = plainText.replace( trimRegex, '' );\n\n\t\tif (\n\t\t\ttrimmedPlainText !== '' &&\n\t\t\ttrimmedPlainText.indexOf( '\\n' ) === -1\n\t\t) {\n\t\t\treturn removeInvalidHTML(\n\t\t\t\tgetBlockInnerHTML( blocks[ 0 ] ),\n\t\t\t\tphrasingContentSchema\n\t\t\t).replace( trimRegex, '' );\n\t\t}\n\t}\n\n\treturn blocks;\n}\n","/**\n * WordPress dependencies\n */\nimport { dispatch, select } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blocksStore } from '../store';\n\n/** @typedef {import('../store/reducer').WPBlockCategory} WPBlockCategory */\n\n/**\n * Returns all the block categories.\n * Ignored from documentation as the recommended usage is via useSelect from @wordpress/data.\n *\n * @ignore\n *\n * @return {WPBlockCategory[]} Block categories.\n */\nexport function getCategories() {\n\treturn select( blocksStore ).getCategories();\n}\n\n/**\n * Sets the block categories.\n *\n * @param {WPBlockCategory[]} categories Block categories.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { store as blocksStore, setCategories } from '@wordpress/blocks';\n * import { useSelect } from '@wordpress/data';\n * import { Button } from '@wordpress/components';\n *\n * const ExampleComponent = () => {\n * // Retrieve the list of current categories.\n * const blockCategories = useSelect(\n * ( select ) => select( blocksStore ).getCategories(),\n * []\n * );\n *\n * return (\n * <Button\n * onClick={ () => {\n * // Add a custom category to the existing list.\n * setCategories( [\n * ...blockCategories,\n * { title: 'Custom Category', slug: 'custom-category' },\n * ] );\n * } }\n * >\n * { __( 'Add a new custom block category' ) }\n * </Button>\n * );\n * };\n * ```\n */\nexport function setCategories( categories ) {\n\tdispatch( blocksStore ).setCategories( categories );\n}\n\n/**\n * Updates a category.\n *\n * @param {string} slug Block category slug.\n * @param {WPBlockCategory} category Object containing the category properties\n * that should be updated.\n *\n * @example\n * ```js\n * import { __ } from '@wordpress/i18n';\n * import { updateCategory } from '@wordpress/blocks';\n * import { Button } from '@wordpress/components';\n *\n * const ExampleComponent = () => {\n * return (\n * <Button\n * onClick={ () => {\n * updateCategory( 'text', { title: __( 'Written Word' ) } );\n * } }\n * >\n * { __( 'Update Text category title' ) }\n * </Button>\n * ) ;\n * };\n * ```\n */\nexport function updateCategory( slug, category ) {\n\tdispatch( blocksStore ).updateCategory( slug, category );\n}\n","/**\n * WordPress dependencies\n */\nimport { renderToString } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { convertLegacyBlockNameAndAttributes } from './parser/convert-legacy-block';\nimport { createBlock } from './factory';\nimport { getBlockType } from './registration';\n\n/**\n * Checks whether a list of blocks matches a template by comparing the block names.\n *\n * @param {Array} blocks Block list.\n * @param {Array} template Block template.\n *\n * @return {boolean} Whether the list of blocks matches a templates.\n */\nexport function doBlocksMatchTemplate( blocks = [], template = [] ) {\n\treturn (\n\t\tblocks.length === template.length &&\n\t\ttemplate.every( ( [ name, , innerBlocksTemplate ], index ) => {\n\t\t\tconst block = blocks[ index ];\n\t\t\treturn (\n\t\t\t\tname === block.name &&\n\t\t\t\tdoBlocksMatchTemplate( block.innerBlocks, innerBlocksTemplate )\n\t\t\t);\n\t\t} )\n\t);\n}\n\n/**\n * Synchronize a block list with a block template.\n *\n * Synchronizing a block list with a block template means that we loop over the blocks\n * keep the block as is if it matches the block at the same position in the template\n * (If it has the same name) and if doesn't match, we create a new block based on the template.\n * Extra blocks not present in the template are removed.\n *\n * @param {Array} blocks Block list.\n * @param {Array} template Block template.\n *\n * @return {Array} Updated Block list.\n */\nexport function synchronizeBlocksWithTemplate( blocks = [], template ) {\n\t// If no template is provided, return blocks unmodified.\n\tif ( ! template ) {\n\t\treturn blocks;\n\t}\n\n\treturn template.map(\n\t\t( [ name, attributes, innerBlocksTemplate ], index ) => {\n\t\t\tconst block = blocks[ index ];\n\n\t\t\tif ( block && block.name === name ) {\n\t\t\t\tconst innerBlocks = synchronizeBlocksWithTemplate(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tinnerBlocksTemplate\n\t\t\t\t);\n\t\t\t\treturn { ...block, innerBlocks };\n\t\t\t}\n\n\t\t\t// To support old templates that were using the \"children\" format\n\t\t\t// for the attributes using \"html\" strings now, we normalize the template attributes\n\t\t\t// before creating the blocks.\n\n\t\t\tconst blockType = getBlockType( name );\n\t\t\tconst isHTMLAttribute = ( attributeDefinition ) =>\n\t\t\t\tattributeDefinition?.source === 'html';\n\t\t\tconst isQueryAttribute = ( attributeDefinition ) =>\n\t\t\t\tattributeDefinition?.source === 'query';\n\n\t\t\tconst normalizeAttributes = ( schema, values ) => {\n\t\t\t\tif ( ! values ) {\n\t\t\t\t\treturn {};\n\t\t\t\t}\n\n\t\t\t\treturn Object.fromEntries(\n\t\t\t\t\tObject.entries( values ).map( ( [ key, value ] ) => [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tnormalizeAttribute( schema[ key ], value ),\n\t\t\t\t\t] )\n\t\t\t\t);\n\t\t\t};\n\t\t\tconst normalizeAttribute = ( definition, value ) => {\n\t\t\t\tif ( isHTMLAttribute( definition ) && Array.isArray( value ) ) {\n\t\t\t\t\t// Introduce a deprecated call at this point\n\t\t\t\t\t// When we're confident that \"children\" format should be removed from the templates.\n\n\t\t\t\t\treturn renderToString( value );\n\t\t\t\t}\n\n\t\t\t\tif ( isQueryAttribute( definition ) && value ) {\n\t\t\t\t\treturn value.map( ( subValues ) => {\n\t\t\t\t\t\treturn normalizeAttributes(\n\t\t\t\t\t\t\tdefinition.query,\n\t\t\t\t\t\t\tsubValues\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t};\n\n\t\t\tconst normalizedAttributes = normalizeAttributes(\n\t\t\t\tblockType?.attributes ?? {},\n\t\t\t\tattributes\n\t\t\t);\n\n\t\t\tlet [ blockName, blockAttributes ] =\n\t\t\t\tconvertLegacyBlockNameAndAttributes(\n\t\t\t\t\tname,\n\t\t\t\t\tnormalizedAttributes\n\t\t\t\t);\n\n\t\t\t// If a Block is undefined at this point, use the core/missing block as\n\t\t\t// a placeholder for a better user experience.\n\t\t\tif ( undefined === getBlockType( blockName ) ) {\n\t\t\t\tblockAttributes = {\n\t\t\t\t\toriginalName: name,\n\t\t\t\t\toriginalContent: '',\n\t\t\t\t\toriginalUndelimitedContent: '',\n\t\t\t\t};\n\t\t\t\tblockName = 'core/missing';\n\t\t\t}\n\n\t\t\treturn createBlock(\n\t\t\t\tblockName,\n\t\t\t\tblockAttributes,\n\t\t\t\tsynchronizeBlocksWithTemplate( [], innerBlocksTemplate )\n\t\t\t);\n\t\t}\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * A Higher Order Component used to inject BlockContent using context to the\n * wrapped component.\n *\n * @deprecated\n *\n * @param {WPComponent} OriginalComponent The component to enhance.\n * @return {WPComponent} The same component.\n */\nexport function withBlockContentContext( OriginalComponent ) {\n\tdeprecated( 'wp.blocks.withBlockContentContext', {\n\t\tsince: '6.1',\n\t} );\n\n\treturn OriginalComponent;\n}\n"],"names":["module","exports","fn","options","head","tail","size","memoized","args","i","node","len","arguments","length","searchCache","next","prev","val","Array","apply","maxSize","clear","characterMap","chars","Object","keys","join","allAccents","RegExp","firstAccent","removeAccents","string","replace","match","has","remove","getDefaultOpts","simple","defaultOptions","omitExtraWLInCodeBlocks","defaultValue","describe","type","noHeaderId","prefixHeaderId","rawPrefixHeaderId","ghCompatibleHeaderId","rawHeaderId","headerLevelStart","parseImgDimensions","simplifiedAutoLink","excludeTrailingPunctuationFromURLs","literalMidWordUnderscores","literalMidWordAsterisks","strikethrough","tables","tablesHeaderId","ghCodeBlocks","tasklists","smoothLivePreview","smartIndentationFix","description","disableForced4SpacesIndentedSublists","simpleLineBreaks","requireSpaceBeforeHeadingText","ghMentions","ghMentionsLink","encodeEmails","openLinksInNewWindow","backslashEscapesHTMLTags","emoji","underline","completeHTMLDocument","metadata","splitAdjacentBlockquotes","JSON","parse","stringify","ret","opt","hasOwnProperty","showdown","parsers","extensions","globalOptions","setFlavor","flavor","github","original","ghost","vanilla","allOn","allOptionsOn","validate","extension","name","errMsg","valid","error","helper","isArray","baseMsg","ext","isString","toLowerCase","isUndefined","listeners","filter","regex","ln","escapeCharactersCallback","wholeMatch","m1","charCodeAt","setOption","key","value","this","getOption","getOptions","resetOptions","Error","preset","option","getFlavor","getFlavorOptions","getDefaultOptions","subParser","func","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","console","warn","a","String","isFunction","toString","call","forEach","obj","callback","prop","s","escapeCharacters","text","charsToEscape","afterBackslash","regexString","unescapeHTMLEntities","txt","rgxFindMatchPos","str","left","right","flags","t","m","start","end","f","g","indexOf","x","l","pos","exec","test","lastIndex","index","push","matchRecursiveRegExp","matchPos","results","slice","replaceRecursiveRegExp","replacement","repStr","finalStr","lng","bits","regexIndexOf","fromIndex","substring","search","splitAtIndex","encodeEmailAddress","mail","encode","ch","Math","floor","random","r","padEnd","targetLength","padString","repeat","msg","alert","log","regexes","asteriskDashAndColon","emojis","Converter","converterOptions","langExtensions","outputModifiers","setConvFlavor","parsed","raw","format","_parseExtension","legacyExtensionLoading","validExt","listen","gOpt","_constructor","_dispatch","evtName","globals","ei","nText","makeHtml","gHtmlBlocks","gHtmlMdBlocks","gHtmlSpans","gUrls","gTitles","gDimensions","gListLevel","hashLinkCounts","converter","rsp","rgx","rTrimInputText","makeMarkdown","makeMd","src","HTMLParser","window","document","doc","createElement","innerHTML","preList","pres","querySelectorAll","presPH","childElementCount","firstChild","tagName","content","trim","language","getAttribute","classes","className","split","c","matches","outerHTML","setAttribute","substitutePreCodeTags","clean","n","childNodes","child","nodeType","nodeValue","removeChild","nodes","mdDoc","addExtension","useExtension","extensionName","splice","output","getMetadata","getMetadataFormat","_setMetadataPair","_setMetadataFormat","_setMetadataRaw","writeAnchorTag","linkText","linkId","url","m5","m6","title","result","wm","st","escape","mentions","username","lnk","target","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","link","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","b","href","bq","pre","codeblock","nextChar","doctype","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiCode","delim","blockText","blockTags","repFunc","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","concat","hashHTMLSpan","html","repText","limit","num","$1","isNaN","parseInt","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hashBlock","matchFound","hLevel","atxStyle","prefix","customizedHeaderId","hText","span","header","writeImageTag","altText","width","height","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","$2","re","replaceFunc","blankLines","parseCells","cell","parseTable","rawTable","tableLines","sLine","id","rawHeaders","map","rawStyles","rawCells","headers","styles","cells","shift","tableHeaderId","row","ii","tb","tblLgn","buildTable","charCodeToReplace","fromCharCode","hasChildNodes","children","childrenLength","innerTxt","headerLevel","headerMark","hasAttribute","listItems","listItemsLenght","listNum","listItemTxt","childrenLenght","spansOnly","data","tableArray","headings","rows","headContent","allign","cols","getElementsByTagName","cellContent","cellSpacesCount","strLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","d","definition","o","defineProperty","enumerable","get","prototype","Symbol","toStringTag","grad","turn","rad","PI","pow","round","e","u","isFinite","h","max","min","v","p","y","substr","Number","object","N","M","H","$","j","rgba","isValid","brightness","isDark","isLight","toHex","toRgb","toRgbString","toHsl","toHslString","toHsv","invert","w","saturate","desaturate","grayscale","lighten","darken","rotate","hue","alpha","isEqual","S","BLOCK_ICON_DEFAULT","DEPRECATED_ENTRY_KEYS","__EXPERIMENTAL_STYLE_PROPERTY","support","background","useEngine","backgroundColor","requiresOptOut","borderColor","borderRadius","properties","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","borderStyle","borderWidth","borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth","color","linkColor","buttonColor","buttonBackgroundColor","fontFamily","fontSize","fontStyle","fontWeight","lineHeight","margin","marginTop","marginRight","marginBottom","marginLeft","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","textDecoration","textTransform","letterSpacing","rootOnly","__EXPERIMENTAL_ELEMENTS","heading","h1","h2","h3","h4","h5","h6","button","caption","cite","__EXPERIMENTAL_PATHS_WITH_MERGE","__assign","assign","lowerCase","create","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","input","reduce","pascalCaseTransform","firstChar","charAt","lowerChars","toUpperCase","pascalCase","splitRegexp","stripRegexp","transform","delimiter","noCase","camelCaseTransform","serverSideBlockDefinitions","isObject","unstable__bootstrapServerSideBlockDefinitions","definitions","blockName","apiVersion","ancestor","fromEntries","entries","getBlockSettingsFromMetadata","textdomain","allowedFields","settings","includes","i18nBlockSchema","translateBlockSettingUsingI18nSchema","registerBlockType","blockNameOrMetadata","select","blocksStore","getBlockType","blockType","icon","keywords","attributes","providesContext","usesContext","supports","variations","save","dispatch","__experimentalRegisterBlockType","i18nSchema","settingValue","_x","accumulator","registerBlockCollection","namespace","addBlockCollection","unregisterBlockType","oldBlock","removeBlockTypes","setFreeformContentHandlerName","setFreeformFallbackBlockName","getFreeformContentHandlerName","getFreeformFallbackBlockName","getGroupingBlockName","setUnregisteredTypeHandlerName","setUnregisteredFallbackBlockName","getUnregisteredTypeHandlerName","getUnregisteredFallbackBlockName","setDefaultBlockName","setGroupingBlockName","getDefaultBlockName","getBlockTypes","getBlockSupport","nameOrType","feature","defaultSupports","hasBlockSupport","isReusableBlock","blockOrType","isTemplatePart","getChildBlockNames","hasChildBlocks","hasChildBlocksWithInserterSupport","registerBlockStyle","styleVariation","addBlockStyles","unregisterBlockStyle","styleVariationName","removeBlockStyles","getBlockVariations","scope","registerBlockVariation","variation","addBlockVariations","unregisterBlockVariation","variationName","removeBlockVariations","getRandomValues","crypto","bind","msCrypto","rnds8","Uint8Array","rng","uuid","byteToHex","buf","offset","rnds","arr","TypeError","createBlock","innerBlocks","sanitizedAttributes","__experimentalSanitizeBlockAttributes","clientId","createBlocksFromInnerBlocksTemplate","innerBlocksOrTemplate","innerBlock","innerBlockTemplate","__experimentalCloneSanitizedBlock","block","mergeAttributes","newInnerBlocks","cloneBlock","isPossibleTransformForSource","direction","blocks","isMultiBlock","firstBlockName","isWildcardBlockTransform","every","sourceBlock","isContainerGroupBlock","maybeCheckTransformIsMatch","usingMobileTransformations","getPossibleBlockTransformations","blockTypesForFromTransforms","findTransform","getBlockTransforms","getBlockTypesForPossibleFromTransforms","blockTypesForToTransforms","transformation","flat","getBlockTypesForPossibleToTransforms","Set","transforms","predicate","hooks","createHooks","candidate","addFilter","priority","applyFilters","blockTypeOrName","normalizeBlockType","supportedMobileTransforms","transformBlockName","isMatch","switchToBlockType","blocksArray","firstBlock","sourceName","transformationsFrom","transformationResults","__experimentalConvert","currentBlock","some","getBlockFromExample","example","extend","white","bisque","blue","cadetblue","chartreuse","chocolate","coral","antiquewhite","aqua","azure","whitesmoke","papayawhip","plum","blanchedalmond","black","gold","goldenrod","gainsboro","cornsilk","cornflowerblue","burlywood","aquamarine","beige","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkkhaki","darkgray","darkgreen","darkgrey","peachpuff","darkmagenta","darkred","darkorchid","darkorange","darkslateblue","gray","darkslategray","darkslategrey","deeppink","deepskyblue","wheat","firebrick","floralwhite","ghostwhite","darkviolet","magenta","green","dodgerblue","grey","honeydew","hotpink","blueviolet","forestgreen","lawngreen","indianred","indigo","fuchsia","brown","maroon","mediumblue","lightcoral","darkturquoise","lightcyan","ivory","lightyellow","lightsalmon","lightseagreen","linen","mediumaquamarine","lemonchiffon","lime","khaki","mediumseagreen","limegreen","mediumspringgreen","lightskyblue","lightblue","midnightblue","lightpink","mistyrose","moccasin","mintcream","lightslategray","lightslategrey","navajowhite","navy","mediumvioletred","powderblue","palegoldenrod","oldlace","paleturquoise","mediumturquoise","mediumorchid","rebeccapurple","lightsteelblue","mediumslateblue","thistle","tan","orchid","mediumpurple","purple","pink","skyblue","springgreen","palegreen","red","yellow","slateblue","lavenderblush","peru","palevioletred","violet","teal","slategray","slategrey","aliceblue","darkseagreen","darkolivegreen","greenyellow","seagreen","seashell","tomato","silver","sienna","lavender","lightgreen","orange","orangered","steelblue","royalblue","turquoise","yellowgreen","salmon","saddlebrown","sandybrown","rosybrown","darksalmon","lightgoldenrodyellow","snow","lightgrey","lightgray","dimgray","dimgrey","olivedrab","olive","toName","closest","luminance","contrast","isReadable","level","ICON_COLORS","isUnmodifiedDefaultBlock","defaultBlockName","newDefaultBlock","isValidIcon","isValidElement","Component","normalizeIconObject","colordBgColor","colord","getColorContrast","iconColor","maxContrast","foreground","find","shadowColor","getBlockLabel","context","__experimentalLabel","getLabel","label","stripHTML","getAccessibleBlockLabel","position","hasPosition","hasLabel","sprintf","__","schema","default","source","__experimentalGetBlockAttributesNamesByRole","role","attributesNames","attributeName","__experimentalRole","omit","DEFAULT_CATEGORIES","slug","keyBlockTypesByName","types","newBlockTypes","getUniqueItemsByName","items","acc","currentItem","createBlockNameSetterReducer","setActionType","state","action","names","freeformFallbackBlockName","unregisteredFallbackBlockName","groupingBlockName","combineReducers","unprocessedBlockTypes","blockTypes","blockStyles","mapValues","styleNames","blockVariations","variationNames","categories","category","isEmpty","collections","LEAF_KEY","arrayOf","isShallowEqual","selector","getDependants","rootCache","normalizedGetDependants","getCache","dependants","dependant","cache","caches","isUniqueByDependants","WeakMap","set","createCache","callSelector","lastDependants","getNormalizedBlockType","__experimentalGetUnprocessedBlockTypes","createSelector","values","getBlockStyles","getActiveBlockVariation","isActive","attributeKeys","definedAttributes","attribute","getDefaultBlockVariation","reverse","isDefault","getCategories","getCollections","parent","isMatchingSearchTerm","searchTerm","getNormalizedSearchTerm","flow","term","normalizedSearchTerm","isSearchMatch","normalizedCandidate","childBlockName","__experimentalHasContentRoleAttribute","blockTypeName","LEGACY_CATEGORY_MAPPING","common","formatting","layout","maybeFunc","processBlockType","deprecated","deprecation","pick","ctor","prot","constructor","isPlainObject","edit","addBlockTypes","castArray","processedBlockType","__experimentalReapplyBlockTypeFilters","processedBlockTypes","setCategories","updateCategory","removeBlockCollection","store","createReduxStore","reducer","selectors","actions","register","serializeRawBlock","rawBlock","isCommentDelimited","attrs","innerContent","childIndex","getCommentDelimitedContent","getBlockDefaultClassName","getBlockMenuDefaultClassName","blockPropsProvider","innerBlocksPropsProvider","getBlockProps","props","getInnerBlocksProps","serialize","isInnerBlocks","RawHTML","getSaveElement","instance","render","element","hasFilter","cloneElement","getSaveContent","renderToString","getCommentAttributes","attributeSchema","getBlockInnerHTML","saveContent","originalContent","rawBlockName","serializedAttributes","serializeAttributes","startsWith","__unstableSerializeAndClean","removep","__unstableBlockSource","saveAttributes","serializeBlock","WSP","ALPHA","CRLF","char","delegate","entityParser","line","column","tagNameBuffer","states","beforeData","peek","transitionTo","markTagStart","consume","tag","beginData","finishData","appendToData","consumeCharRef","tagOpen","isAlpha","beginStartTag","appendToTagName","markupDeclarationOpen","beginComment","commentStart","finishComment","appendToCommentData","commentStartDash","comment","commentEndDash","commentEnd","isSpace","finishTag","beforeAttributeName","reportSyntaxError","beginAttribute","appendToAttributeName","beginAttributeValue","finishAttributeValue","afterAttributeName","beforeAttributeValue","appendToAttributeValue","attributeValueDoubleQuoted","attributeValueSingleQuoted","attributeValueUnquoted","afterAttributeValueQuoted","selfClosingStartTag","markTagAsSelfClosing","endTagOpen","beginEndTag","reset","tokenize","tokenizePart","tokenizeEOF","preprocessInput","handler","flushData","endIndex","entity","count","token","startLine","startColumn","tokens","tokenizer","EventedTokenizer","_currentAttribute","current","currentAttribute","addLocInfo","loc","selfClosing","isQuoted","message","syntaxError","createLogger","createLogHandler","logger","warning","getItems","createQueuedLogger","queue","REGEXP_WHITESPACE","REGEXP_ONLY_WHITESPACE","REGEXP_STYLE_URL_TYPE","BOOLEAN_ATTRIBUTES","MEANINGFUL_ATTRIBUTES","TEXT_NORMALIZATIONS","getTextPiecesSplitOnWhitespace","REGEXP_NAMED_CHARACTER_REFERENCE","REGEXP_DECIMAL_CHARACTER_REFERENCE","REGEXP_HEXADECIMAL_CHARACTER_REFERENCE","DecodeEntityParser","decodeEntities","getMeaningfulAttributePairs","pair","isEquivalentTextTokens","actual","expected","actualChars","expectedChars","normalize","getNormalizedLength","parseFloat","getNormalizedStyleValue","getStyleProperties","pairs","valueParts","isEqualAttributesOfName","class","actualPieces","expectedPieces","actualDiff","expectedDiff","isEqualTagAttributePairs","expectedAttributes","actualValue","nameLower","expectedValue","isEqualAttributes","isEqualTokensOfType","StartTag","Chars","Comment","getNextNonWhitespaceToken","getHTMLTokens","Tokenizer","isClosedByToken","currentToken","nextToken","isEquivalentHTML","actualTokens","expectedTokens","actualToken","expectedToken","isEqualTokens","validateBlock","isFallbackBlock","generatedBlockContent","isValidBlockContent","originalBlockContent","since","plugin","alternative","convertLegacyBlockNameAndAttributes","newAttributes","service","providerSlug","speaker","polldaddy","providerNameSlug","responsive","legacy","getPath","path","segment","segments","getDocument","implementation","createHTMLDocument","matchers","body","memo","querySelector","getNamedNodeMapAsObject","nodeMap","fromDOM","domNode","TEXT_NODE","ELEMENT_NODE","nodeName","matcher","isNodeOfType","toHTML","domNodes","blockNode","getChildrenArray","getBlockAttribute","attributeKey","commentAttributes","parseWithAttributeSchema","isOfType","isOfTypes","isValidByType","enumSet","isValidByEnum","enum","matcherFromSource","memoize","sourceConfig","attr","toBooleanAttributeMatcher","multilineTag","multiline","subMatchers","query","parseHtml","hpqParse","getBlockAttributes","blockAttributes","CLASS_ATTR_SCHEMA","getHTMLRootElementClasses","applyBuiltInValidationFixes","updatedBlockAttributes","omittedClassName","attributesSansClassName","serialized","defaultClasses","customClasses","fixCustomClassname","stubFalse","parseRawBlock","normalizedBlock","fallbackBlockName","rawAttributes","rawInnerBlocks","rawInnerHTML","__unstableSkipAutop","autop","normalizeRawBlock","correctName","correctedAttributes","convertLegacyBlocks","unregisteredFallbackBlock","originalUndelimitedContent","originalName","createMissingBlockType","parsedInnerBlocks","parsedBlock","validatedBlock","unvalidatedBlock","validationIssues","fixedBlock","isFixedValid","applyBlockValidation","updatedBlock","parsedAttributes","deprecatedDefinitions","isEligible","deprecatedBlockType","migratedBlock","migratedInnerBlocks","migratedAttributes","migrate","applyBlockDeprecatedVersions","__unstableSkipMigrationLogs","groupCollapsed","info","groupEnd","grammarParse","getRawTransforms","htmlToBlocks","from","flatMap","rawTransform","normaliseBlocks","HTML","decuDoc","accuDoc","decu","accu","lastChild","appendChild","nextSibling","isPhrasingContent","specialCommentConverter","COMMENT_NODE","customText","sibling","noTeaser","moreBlock","dataset","createMore","parentNode","nodeIndex","wrapperNode","paragraphBuilder","insertBefore","moreCommentConverter","createNextpage","isList","listReducer","prevElement","previousElementSibling","parentElement","parentListItem","prevListItem","parentList","unwrap","blockquoteNormaliser","wrapFigureContent","beforeElement","figure","ownerDocument","figureContentReducer","isTextContent","isFigureContent","nodeToInsert","canHaveAnchor","wrapper","classList","contains","textContent","maybeArray","segmentHTMLToShortcodeBlock","excludedBlockNames","transformsFrom","regexp","transformTags","transformTag","previousIndex","beforeHTML","afterHTML","shortcode","transformationBlockType","getBlockContentSchema","schemaArgs","phrasingContentSchema","getPhrasingContentSchema","isPaste","schemas","hasAnchorSupport","mergeWith","objValue","srcValue","getBlockContentSchemaFromTransforms","deepFilterNodeList","nodeList","filters","deepFilterHTML","getSibling","which","deprecatedGetPhrasingContentSchema","rawHandler","pieces","shortcodeConverter","blockContentSchema","piece","Boolean","commentRemover","deepCheck","contextTag","tagGroup","isInline","isDoubleBR","previousSibling","phrasingContentReducer","textDecorationLine","verticalAlign","wrap","replaceTag","rel","removeAttribute","headRemover","msListConverter","prevNode","isNumeric","newListNode","listNode","listItem","receivingNode","atob","File","imageCorrector","decoded","uint8Array","file","createBlobURL","divNormaliser","iframeRemover","createTextNode","replaceChild","googleDocsUIdRemover","htmlFormattingRemover","newData","character","brRemover","emptyParagraphRemover","slackParagraphCorrector","filterInlineHTML","preserveWhiteSpace","googleDocsUIDRemover","removeInvalidHTML","inline","pasteHandler","plainText","mode","isPlain","p1","p2","p3","slackMarkdownVariantCorrector","hasShortcodes","isInlineContent","trimRegex","trimmedPlainText","doBlocksMatchTemplate","template","innerBlocksTemplate","synchronizeBlocksWithTemplate","normalizeAttributes","normalizeAttribute","attributeDefinition","isQueryAttribute","subValues","normalizedAttributes","withBlockContentContext","OriginalComponent"],"sourceRoot":""}
|
1 |
+
{"version":3,"file":"./build/blocks/index.min.js","mappings":"sBAsKAA,EAAOC,QA/HP,SAAiBC,EAAIC,GACpB,IAGIC,EAGAC,EANAC,EAAO,EAUX,SAASC,IACR,IAECC,EAAMC,EAFHC,EAAON,EACVO,EAAMC,UAAUC,OAGjBC,EAAa,KAAQJ,GAAO,CAQ3B,GAAKA,EAAKF,KAAKK,SAAWD,UAAUC,OAApC,CAMA,IAAMJ,EAAI,EAAGA,EAAIE,EAAKF,IACrB,GAAKC,EAAKF,KAAMC,KAAQG,UAAWH,GAAM,CACxCC,EAAOA,EAAKK,KACZ,SAASD,EA4BX,OArBKJ,IAASN,IAGRM,IAASL,IACbA,EAAOK,EAAKM,MAKoBN,EAAU,KAAEK,KAAOL,EAAKK,KACpDL,EAAKK,OACTL,EAAKK,KAAKC,KAAON,EAAKM,MAGvBN,EAAKK,KAAOX,EACZM,EAAKM,KAAO,KACmB,EAASA,KAAON,EAC/CN,EAAOM,GAIDA,EAAKO,IApCXP,EAAOA,EAAKK,KA2Cd,IADAP,EAAO,IAAIU,MAAOP,GACZF,EAAI,EAAGA,EAAIE,EAAKF,IACrBD,EAAMC,GAAMG,UAAWH,GAgCxB,OA7BAC,EAAO,CACNF,KAAMA,EAGNS,IAAKf,EAAGiB,MAAO,KAAMX,IAOjBJ,GACJA,EAAKY,KAAON,EACZA,EAAKK,KAAOX,GAGZC,EAAOK,EAIHJ,IAAsC,EAAYc,SACtDf,EAAsC,EAASW,MACPD,KAAO,KAE/CT,IAGDF,EAAOM,EAEAA,EAAKO,IAuBb,OAnHAd,EAAUA,GAAW,GA+FrBI,EAASc,MAAQ,WAChBjB,EAAO,KACPC,EAAO,KACPC,EAAO,GAiBDC,I,SCnKR,IAAIe,EAAe,CAClB,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,KACL,EAAK,KACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GA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","sources":["webpack://wp/./node_modules/memize/index.js","webpack://wp/./node_modules/remove-accents/index.js","webpack://wp/./node_modules/showdown/src/options.js","webpack://wp/./node_modules/showdown/src/showdown.js","webpack://wp/./node_modules/showdown/src/helpers.js","webpack://wp/./node_modules/showdown/src/converter.js","webpack://wp/./node_modules/showdown/src/subParsers/anchors.js","webpack://wp/./node_modules/showdown/src/subParsers/autoLinks.js","webpack://wp/./node_modules/showdown/src/subParsers/blockGamut.js","webpack://wp/./node_modules/showdown/src/subParsers/blockQuotes.js","webpack://wp/./node_modules/showdown/src/subParsers/codeBlocks.js","webpack://wp/./node_modules/showdown/src/subParsers/codeSpans.js","webpack://wp/./node_modules/showdown/src/subParsers/completeHTMLDocument.js","webpack://wp/./node_modules/showdown/src/subParsers/detab.js","webpack://wp/./node_modules/showdown/src/subParsers/ellipsis.js","webpack://wp/./node_modules/showdown/src/subParsers/emoji.js","webpack://wp/./node_modules/showdown/src/subParsers/encodeAmpsAndAngles.js","webpack://wp/./node_modules/showdown/src/subParsers/encodeBackslashEscapes.js","webpack://wp/./node_modules/showdown/src/subParsers/encodeCode.js","webpack://wp/./node_modules/showdown/src/subParsers/escapeSpecialCharsWithinTagAttributes.js","webpack://wp/./node_modules/showdown/src/subParsers/githubCodeBlocks.js","webpack://wp/./node_modules/showdown/src/subParsers/hashBlock.js","webpack://wp/./node_modules/showdown/src/subParsers/hashCodeTags.js","webpack://wp/./node_modules/showdown/src/subParsers/hashElement.js","webpack://wp/./node_modules/showdown/src/subParsers/hashHTMLBlocks.js","webpack://wp/./node_modules/showdown/src/subParsers/hashHTMLSpans.js","webpack://wp/./node_modules/showdown/src/subParsers/hashPreCodeTags.js","webpack://wp/./node_modules/showdown/src/subParsers/headers.js","webpack://wp/./node_modules/showdown/src/subParsers/horizontalRule.js","webpack://wp/./node_modules/showdown/src/subParsers/images.js","webpack://wp/./node_modules/showdown/src/subParsers/italicsAndBold.js","webpack://wp/./node_modules/showdown/src/subParsers/lists.js","webpack://wp/./node_modules/showdown/src/subParsers/metadata.js","webpack://wp/./node_modules/showdown/src/subParsers/outdent.js","webpack://wp/./node_modules/showdown/src/subParsers/paragraphs.js","webpack://wp/./node_modules/showdown/src/subParsers/runExtension.js","webpack://wp/./node_modules/showdown/src/subParsers/spanGamut.js","webpack://wp/./node_modules/showdown/src/subParsers/strikethrough.js","webpack://wp/./node_modules/showdown/src/subParsers/stripLinkDefinitions.js","webpack://wp/./node_modules/showdown/src/subParsers/tables.js","webpack://wp/./node_modules/showdown/src/subParsers/underline.js","webpack://wp/./node_modules/showdown/src/subParsers/unescapeSpecialChars.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/blockquote.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/codeBlock.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/codeSpan.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/emphasis.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/header.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/hr.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/image.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/links.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/list.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/listItem.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/node.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/paragraph.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/pre.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/strikethrough.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/strong.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/table.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/tableCell.js","webpack://wp/./node_modules/showdown/src/subParsers/makeMarkdown/txt.js","webpack://wp/./node_modules/showdown/src/loader.js","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/compat get default export","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"data\"]","webpack://wp/external window \"lodash\"","webpack://wp/external window [\"wp\",\"i18n\"]","webpack://wp/./packages/blocks/node_modules/colord/index.mjs","webpack://wp/./packages/blocks/node_modules/colord/plugins/a11y.mjs","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"dom\"]","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/constants.js","webpack://wp/./node_modules/tslib/tslib.es6.js","webpack://wp/./node_modules/lower-case/src/index.ts","webpack://wp/./node_modules/no-case/src/index.ts","webpack://wp/./node_modules/pascal-case/src/index.ts","webpack://wp/./node_modules/camel-case/src/index.ts","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/registration.js","webpack://wp/./node_modules/uuid/dist/esm-browser/rng.js","webpack://wp/./node_modules/uuid/dist/esm-browser/regex.js","webpack://wp/./node_modules/uuid/dist/esm-browser/validate.js","webpack://wp/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://wp/./node_modules/uuid/dist/esm-browser/v4.js","webpack://wp/external window [\"wp\",\"hooks\"]","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/factory.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/utils.js","webpack://wp/./packages/blocks/node_modules/colord/plugins/names.mjs","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/reducer.js","webpack://wp/./node_modules/rememo/es/rememo.js","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/selectors.js","webpack://wp/./node_modules/is-plain-object/dist/is-plain-object.mjs","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/actions.js","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/constants.js","webpack://wp/./packages/blocks/build-module/store/@wordpress/blocks/src/store/index.js","webpack://wp/external window [\"wp\",\"blockSerializationDefaultParser\"]","webpack://wp/external window [\"wp\",\"autop\"]","webpack://wp/external window [\"wp\",\"isShallowEqual\"]","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/serialize-raw-block.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/serializer.js","webpack://wp/./node_modules/simple-html-tokenizer/src/generated/html5-named-char-refs.ts","webpack://wp/./node_modules/simple-html-tokenizer/src/utils.ts","webpack://wp/./node_modules/simple-html-tokenizer/src/evented-tokenizer.ts","webpack://wp/./node_modules/simple-html-tokenizer/src/tokenizer.ts","webpack://wp/external window [\"wp\",\"deprecated\"]","webpack://wp/external window [\"wp\",\"htmlEntities\"]","webpack://wp/./packages/blocks/build-module/api/validation/@wordpress/blocks/src/api/validation/logger.js","webpack://wp/./packages/blocks/build-module/api/validation/@wordpress/blocks/src/api/validation/index.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/convert-legacy-block.js","webpack://wp/./node_modules/hpq/es/get-path.js","webpack://wp/./node_modules/hpq/es/index.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/node.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/children.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/get-block-attributes.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/matchers.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/fix-custom-classname.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/apply-built-in-validation-fixes.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/apply-block-deprecated-versions.js","webpack://wp/./packages/blocks/build-module/api/parser/@wordpress/blocks/src/api/parser/index.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/get-raw-transforms.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/html-to-blocks.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/normalise-blocks.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/special-comment-converter.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/list-reducer.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/blockquote-normaliser.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/figure-content-reducer.js","webpack://wp/external window [\"wp\",\"shortcode\"]","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/shortcode-converter.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/utils.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/index.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/comment-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/is-inline-content.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/phrasing-content-reducer.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/head-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/ms-list-converter.js","webpack://wp/external window [\"wp\",\"blob\"]","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/image-corrector.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/div-normaliser.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/markdown-converter.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/iframe-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/google-docs-uid-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/html-formatting-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/br-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/empty-paragraph-remover.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/slack-paragraph-corrector.js","webpack://wp/./packages/blocks/build-module/api/raw-handling/@wordpress/blocks/src/api/raw-handling/paste-handler.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/categories.js","webpack://wp/./packages/blocks/build-module/api/@wordpress/blocks/src/api/templates.js","webpack://wp/./packages/blocks/build-module/@wordpress/blocks/src/deprecated.js"],"sourcesContent":["/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {Function} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {F & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize( fn, options ) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized( /* ...args */ ) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs, i;\n\n\t\tsearchCache: while ( node ) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif ( node.args.length !== arguments.length ) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( node.args[ i ] !== arguments[ i ] ) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif ( node !== head ) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif ( node === tail ) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ ( node.prev ).next = node.next;\n\t\t\t\tif ( node.next ) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ ( head ).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply( null, args ),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif ( head ) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif ( size === /** @type {MemizeOptions} */ ( options ).maxSize ) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ ( tail ).prev;\n\t\t\t/** @type {MemizeCacheNode} */ ( tail ).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function() {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\tif ( process.env.NODE_ENV === 'test' ) {\n\t\t// Cache is not exposed in the public API, but used in tests to ensure\n\t\t// expected list progression\n\t\tmemoized.getCache = function() {\n\t\t\treturn [ head, tail, size ];\n\t\t};\n\t}\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nmodule.exports = memize;\n","var characterMap = {\r\n\t\"À\": \"A\",\r\n\t\"Á\": \"A\",\r\n\t\"Â\": \"A\",\r\n\t\"Ã\": \"A\",\r\n\t\"Ä\": \"A\",\r\n\t\"Å\": \"A\",\r\n\t\"Ấ\": \"A\",\r\n\t\"Ắ\": \"A\",\r\n\t\"Ẳ\": \"A\",\r\n\t\"Ẵ\": \"A\",\r\n\t\"Ặ\": \"A\",\r\n\t\"Æ\": \"AE\",\r\n\t\"Ầ\": \"A\",\r\n\t\"Ằ\": \"A\",\r\n\t\"Ȃ\": \"A\",\r\n\t\"Ç\": \"C\",\r\n\t\"Ḉ\": \"C\",\r\n\t\"È\": \"E\",\r\n\t\"É\": \"E\",\r\n\t\"Ê\": \"E\",\r\n\t\"Ë\": \"E\",\r\n\t\"Ế\": \"E\",\r\n\t\"Ḗ\": \"E\",\r\n\t\"Ề\": \"E\",\r\n\t\"Ḕ\": \"E\",\r\n\t\"Ḝ\": \"E\",\r\n\t\"Ȇ\": \"E\",\r\n\t\"Ì\": \"I\",\r\n\t\"Í\": \"I\",\r\n\t\"Î\": \"I\",\r\n\t\"Ï\": \"I\",\r\n\t\"Ḯ\": \"I\",\r\n\t\"Ȋ\": \"I\",\r\n\t\"Ð\": \"D\",\r\n\t\"Ñ\": \"N\",\r\n\t\"Ò\": \"O\",\r\n\t\"Ó\": \"O\",\r\n\t\"Ô\": \"O\",\r\n\t\"Õ\": \"O\",\r\n\t\"Ö\": \"O\",\r\n\t\"Ø\": \"O\",\r\n\t\"Ố\": \"O\",\r\n\t\"Ṍ\": \"O\",\r\n\t\"Ṓ\": \"O\",\r\n\t\"Ȏ\": \"O\",\r\n\t\"Ù\": \"U\",\r\n\t\"Ú\": \"U\",\r\n\t\"Û\": \"U\",\r\n\t\"Ü\": \"U\",\r\n\t\"Ý\": \"Y\",\r\n\t\"à\": \"a\",\r\n\t\"á\": \"a\",\r\n\t\"â\": \"a\",\r\n\t\"ã\": \"a\",\r\n\t\"ä\": \"a\",\r\n\t\"å\": \"a\",\r\n\t\"ấ\": \"a\",\r\n\t\"ắ\": \"a\",\r\n\t\"ẳ\": \"a\",\r\n\t\"ẵ\": \"a\",\r\n\t\"ặ\": \"a\",\r\n\t\"æ\": \"ae\",\r\n\t\"ầ\": \"a\",\r\n\t\"ằ\": \"a\",\r\n\t\"ȃ\": \"a\",\r\n\t\"ç\": \"c\",\r\n\t\"ḉ\": \"c\",\r\n\t\"è\": \"e\",\r\n\t\"é\": \"e\",\r\n\t\"ê\": \"e\",\r\n\t\"ë\": \"e\",\r\n\t\"ế\": \"e\",\r\n\t\"ḗ\": \"e\",\r\n\t\"ề\": \"e\",\r\n\t\"ḕ\": \"e\",\r\n\t\"ḝ\": \"e\",\r\n\t\"ȇ\": \"e\",\r\n\t\"ì\": \"i\",\r\n\t\"í\": \"i\",\r\n\t\"î\": \"i\",\r\n\t\"ï\": \"i\",\r\n\t\"ḯ\": \"i\",\r\n\t\"ȋ\": \"i\",\r\n\t\"ð\": \"d\",\r\n\t\"ñ\": \"n\",\r\n\t\"ò\": \"o\",\r\n\t\"ó\": \"o\",\r\n\t\"ô\": \"o\",\r\n\t\"õ\": \"o\",\r\n\t\"ö\": \"o\",\r\n\t\"ø\": \"o\",\r\n\t\"ố\": \"o\",\r\n\t\"ṍ\": \"o\",\r\n\t\"ṓ\": \"o\",\r\n\t\"ȏ\": \"o\",\r\n\t\"ù\": \"u\",\r\n\t\"ú\": \"u\",\r\n\t\"û\": \"u\",\r\n\t\"ü\": \"u\",\r\n\t\"ý\": \"y\",\r\n\t\"ÿ\": \"y\",\r\n\t\"Ā\": \"A\",\r\n\t\"ā\": \"a\",\r\n\t\"Ă\": \"A\",\r\n\t\"ă\": \"a\",\r\n\t\"Ą\": \"A\",\r\n\t\"ą\": \"a\",\r\n\t\"Ć\": \"C\",\r\n\t\"ć\": \"c\",\r\n\t\"Ĉ\": \"C\",\r\n\t\"ĉ\": \"c\",\r\n\t\"Ċ\": \"C\",\r\n\t\"ċ\": \"c\",\r\n\t\"Č\": \"C\",\r\n\t\"č\": \"c\",\r\n\t\"C̆\": \"C\",\r\n\t\"c̆\": \"c\",\r\n\t\"Ď\": \"D\",\r\n\t\"ď\": \"d\",\r\n\t\"Đ\": \"D\",\r\n\t\"đ\": \"d\",\r\n\t\"Ē\": \"E\",\r\n\t\"ē\": \"e\",\r\n\t\"Ĕ\": \"E\",\r\n\t\"ĕ\": \"e\",\r\n\t\"Ė\": \"E\",\r\n\t\"ė\": \"e\",\r\n\t\"Ę\": \"E\",\r\n\t\"ę\": \"e\",\r\n\t\"Ě\": \"E\",\r\n\t\"ě\": \"e\",\r\n\t\"Ĝ\": \"G\",\r\n\t\"Ǵ\": \"G\",\r\n\t\"ĝ\": \"g\",\r\n\t\"ǵ\": \"g\",\r\n\t\"Ğ\": \"G\",\r\n\t\"ğ\": \"g\",\r\n\t\"Ġ\": \"G\",\r\n\t\"ġ\": \"g\",\r\n\t\"Ģ\": \"G\",\r\n\t\"ģ\": \"g\",\r\n\t\"Ĥ\": \"H\",\r\n\t\"ĥ\": \"h\",\r\n\t\"Ħ\": \"H\",\r\n\t\"ħ\": \"h\",\r\n\t\"Ḫ\": \"H\",\r\n\t\"ḫ\": \"h\",\r\n\t\"Ĩ\": \"I\",\r\n\t\"ĩ\": \"i\",\r\n\t\"Ī\": \"I\",\r\n\t\"ī\": \"i\",\r\n\t\"Ĭ\": \"I\",\r\n\t\"ĭ\": \"i\",\r\n\t\"Į\": \"I\",\r\n\t\"į\": \"i\",\r\n\t\"İ\": \"I\",\r\n\t\"ı\": \"i\",\r\n\t\"IJ\": \"IJ\",\r\n\t\"ij\": \"ij\",\r\n\t\"Ĵ\": \"J\",\r\n\t\"ĵ\": \"j\",\r\n\t\"Ķ\": \"K\",\r\n\t\"ķ\": \"k\",\r\n\t\"Ḱ\": \"K\",\r\n\t\"ḱ\": \"k\",\r\n\t\"K̆\": \"K\",\r\n\t\"k̆\": \"k\",\r\n\t\"Ĺ\": \"L\",\r\n\t\"ĺ\": \"l\",\r\n\t\"Ļ\": \"L\",\r\n\t\"ļ\": \"l\",\r\n\t\"Ľ\": \"L\",\r\n\t\"ľ\": \"l\",\r\n\t\"Ŀ\": \"L\",\r\n\t\"ŀ\": \"l\",\r\n\t\"Ł\": \"l\",\r\n\t\"ł\": \"l\",\r\n\t\"Ḿ\": \"M\",\r\n\t\"ḿ\": \"m\",\r\n\t\"M̆\": \"M\",\r\n\t\"m̆\": \"m\",\r\n\t\"Ń\": \"N\",\r\n\t\"ń\": \"n\",\r\n\t\"Ņ\": \"N\",\r\n\t\"ņ\": \"n\",\r\n\t\"Ň\": \"N\",\r\n\t\"ň\": \"n\",\r\n\t\"ʼn\": \"n\",\r\n\t\"N̆\": \"N\",\r\n\t\"n̆\": \"n\",\r\n\t\"Ō\": \"O\",\r\n\t\"ō\": \"o\",\r\n\t\"Ŏ\": \"O\",\r\n\t\"ŏ\": \"o\",\r\n\t\"Ő\": \"O\",\r\n\t\"ő\": \"o\",\r\n\t\"Œ\": \"OE\",\r\n\t\"œ\": \"oe\",\r\n\t\"P̆\": \"P\",\r\n\t\"p̆\": \"p\",\r\n\t\"Ŕ\": \"R\",\r\n\t\"ŕ\": \"r\",\r\n\t\"Ŗ\": \"R\",\r\n\t\"ŗ\": \"r\",\r\n\t\"Ř\": \"R\",\r\n\t\"ř\": \"r\",\r\n\t\"R̆\": \"R\",\r\n\t\"r̆\": \"r\",\r\n\t\"Ȓ\": \"R\",\r\n\t\"ȓ\": \"r\",\r\n\t\"Ś\": \"S\",\r\n\t\"ś\": \"s\",\r\n\t\"Ŝ\": \"S\",\r\n\t\"ŝ\": \"s\",\r\n\t\"Ş\": \"S\",\r\n\t\"Ș\": \"S\",\r\n\t\"ș\": \"s\",\r\n\t\"ş\": \"s\",\r\n\t\"Š\": \"S\",\r\n\t\"š\": \"s\",\r\n\t\"Ţ\": \"T\",\r\n\t\"ţ\": \"t\",\r\n\t\"ț\": \"t\",\r\n\t\"Ț\": \"T\",\r\n\t\"Ť\": \"T\",\r\n\t\"ť\": \"t\",\r\n\t\"Ŧ\": \"T\",\r\n\t\"ŧ\": \"t\",\r\n\t\"T̆\": \"T\",\r\n\t\"t̆\": \"t\",\r\n\t\"Ũ\": \"U\",\r\n\t\"ũ\": \"u\",\r\n\t\"Ū\": \"U\",\r\n\t\"ū\": \"u\",\r\n\t\"Ŭ\": \"U\",\r\n\t\"ŭ\": \"u\",\r\n\t\"Ů\": \"U\",\r\n\t\"ů\": \"u\",\r\n\t\"Ű\": \"U\",\r\n\t\"ű\": \"u\",\r\n\t\"Ų\": \"U\",\r\n\t\"ų\": \"u\",\r\n\t\"Ȗ\": \"U\",\r\n\t\"ȗ\": \"u\",\r\n\t\"V̆\": \"V\",\r\n\t\"v̆\": \"v\",\r\n\t\"Ŵ\": \"W\",\r\n\t\"ŵ\": \"w\",\r\n\t\"Ẃ\": \"W\",\r\n\t\"ẃ\": \"w\",\r\n\t\"X̆\": \"X\",\r\n\t\"x̆\": \"x\",\r\n\t\"Ŷ\": \"Y\",\r\n\t\"ŷ\": \"y\",\r\n\t\"Ÿ\": \"Y\",\r\n\t\"Y̆\": \"Y\",\r\n\t\"y̆\": \"y\",\r\n\t\"Ź\": \"Z\",\r\n\t\"ź\": \"z\",\r\n\t\"Ż\": \"Z\",\r\n\t\"ż\": \"z\",\r\n\t\"Ž\": \"Z\",\r\n\t\"ž\": \"z\",\r\n\t\"ſ\": \"s\",\r\n\t\"ƒ\": \"f\",\r\n\t\"Ơ\": \"O\",\r\n\t\"ơ\": \"o\",\r\n\t\"Ư\": \"U\",\r\n\t\"ư\": \"u\",\r\n\t\"Ǎ\": \"A\",\r\n\t\"ǎ\": \"a\",\r\n\t\"Ǐ\": \"I\",\r\n\t\"ǐ\": \"i\",\r\n\t\"Ǒ\": \"O\",\r\n\t\"ǒ\": \"o\",\r\n\t\"Ǔ\": \"U\",\r\n\t\"ǔ\": \"u\",\r\n\t\"Ǖ\": \"U\",\r\n\t\"ǖ\": \"u\",\r\n\t\"Ǘ\": \"U\",\r\n\t\"ǘ\": \"u\",\r\n\t\"Ǚ\": \"U\",\r\n\t\"ǚ\": \"u\",\r\n\t\"Ǜ\": \"U\",\r\n\t\"ǜ\": \"u\",\r\n\t\"Ứ\": \"U\",\r\n\t\"ứ\": \"u\",\r\n\t\"Ṹ\": \"U\",\r\n\t\"ṹ\": \"u\",\r\n\t\"Ǻ\": \"A\",\r\n\t\"ǻ\": \"a\",\r\n\t\"Ǽ\": \"AE\",\r\n\t\"ǽ\": \"ae\",\r\n\t\"Ǿ\": \"O\",\r\n\t\"ǿ\": \"o\",\r\n\t\"Þ\": \"TH\",\r\n\t\"þ\": \"th\",\r\n\t\"Ṕ\": \"P\",\r\n\t\"ṕ\": \"p\",\r\n\t\"Ṥ\": \"S\",\r\n\t\"ṥ\": \"s\",\r\n\t\"X́\": \"X\",\r\n\t\"x́\": \"x\",\r\n\t\"Ѓ\": \"Г\",\r\n\t\"ѓ\": \"г\",\r\n\t\"Ќ\": \"К\",\r\n\t\"ќ\": \"к\",\r\n\t\"A̋\": \"A\",\r\n\t\"a̋\": \"a\",\r\n\t\"E̋\": \"E\",\r\n\t\"e̋\": \"e\",\r\n\t\"I̋\": \"I\",\r\n\t\"i̋\": \"i\",\r\n\t\"Ǹ\": \"N\",\r\n\t\"ǹ\": \"n\",\r\n\t\"Ồ\": \"O\",\r\n\t\"ồ\": \"o\",\r\n\t\"Ṑ\": \"O\",\r\n\t\"ṑ\": \"o\",\r\n\t\"Ừ\": \"U\",\r\n\t\"ừ\": \"u\",\r\n\t\"Ẁ\": \"W\",\r\n\t\"ẁ\": \"w\",\r\n\t\"Ỳ\": \"Y\",\r\n\t\"ỳ\": \"y\",\r\n\t\"Ȁ\": \"A\",\r\n\t\"ȁ\": \"a\",\r\n\t\"Ȅ\": \"E\",\r\n\t\"ȅ\": \"e\",\r\n\t\"Ȉ\": \"I\",\r\n\t\"ȉ\": \"i\",\r\n\t\"Ȍ\": \"O\",\r\n\t\"ȍ\": \"o\",\r\n\t\"Ȑ\": \"R\",\r\n\t\"ȑ\": \"r\",\r\n\t\"Ȕ\": \"U\",\r\n\t\"ȕ\": \"u\",\r\n\t\"B̌\": \"B\",\r\n\t\"b̌\": \"b\",\r\n\t\"Č̣\": \"C\",\r\n\t\"č̣\": \"c\",\r\n\t\"Ê̌\": \"E\",\r\n\t\"ê̌\": \"e\",\r\n\t\"F̌\": \"F\",\r\n\t\"f̌\": \"f\",\r\n\t\"Ǧ\": \"G\",\r\n\t\"ǧ\": \"g\",\r\n\t\"Ȟ\": \"H\",\r\n\t\"ȟ\": \"h\",\r\n\t\"J̌\": \"J\",\r\n\t\"ǰ\": \"j\",\r\n\t\"Ǩ\": \"K\",\r\n\t\"ǩ\": \"k\",\r\n\t\"M̌\": \"M\",\r\n\t\"m̌\": \"m\",\r\n\t\"P̌\": \"P\",\r\n\t\"p̌\": \"p\",\r\n\t\"Q̌\": \"Q\",\r\n\t\"q̌\": \"q\",\r\n\t\"Ř̩\": \"R\",\r\n\t\"ř̩\": \"r\",\r\n\t\"Ṧ\": \"S\",\r\n\t\"ṧ\": \"s\",\r\n\t\"V̌\": \"V\",\r\n\t\"v̌\": \"v\",\r\n\t\"W̌\": \"W\",\r\n\t\"w̌\": \"w\",\r\n\t\"X̌\": \"X\",\r\n\t\"x̌\": \"x\",\r\n\t\"Y̌\": \"Y\",\r\n\t\"y̌\": \"y\",\r\n\t\"A̧\": \"A\",\r\n\t\"a̧\": \"a\",\r\n\t\"B̧\": \"B\",\r\n\t\"b̧\": \"b\",\r\n\t\"Ḑ\": \"D\",\r\n\t\"ḑ\": \"d\",\r\n\t\"Ȩ\": \"E\",\r\n\t\"ȩ\": \"e\",\r\n\t\"Ɛ̧\": \"E\",\r\n\t\"ɛ̧\": \"e\",\r\n\t\"Ḩ\": \"H\",\r\n\t\"ḩ\": \"h\",\r\n\t\"I̧\": \"I\",\r\n\t\"i̧\": \"i\",\r\n\t\"Ɨ̧\": \"I\",\r\n\t\"ɨ̧\": \"i\",\r\n\t\"M̧\": \"M\",\r\n\t\"m̧\": \"m\",\r\n\t\"O̧\": \"O\",\r\n\t\"o̧\": \"o\",\r\n\t\"Q̧\": \"Q\",\r\n\t\"q̧\": \"q\",\r\n\t\"U̧\": \"U\",\r\n\t\"u̧\": \"u\",\r\n\t\"X̧\": \"X\",\r\n\t\"x̧\": \"x\",\r\n\t\"Z̧\": \"Z\",\r\n\t\"z̧\": \"z\",\r\n};\r\n\r\nvar chars = Object.keys(characterMap).join('|');\r\nvar allAccents = new RegExp(chars, 'g');\r\nvar firstAccent = new RegExp(chars, '');\r\n\r\nvar removeAccents = function(string) {\t\r\n\treturn string.replace(allAccents, function(match) {\r\n\t\treturn characterMap[match];\r\n\t});\r\n};\r\n\r\nvar hasAccents = function(string) {\r\n\treturn !!string.match(firstAccent);\r\n};\r\n\r\nmodule.exports = removeAccents;\r\nmodule.exports.has = hasAccents;\r\nmodule.exports.remove = removeAccents;\r\n","/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n description: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n description: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n description: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n description: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n description: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n description: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n description: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n description: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n description: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n description: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n description: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof console === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f‍\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4‍\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71‍\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47‍\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77‍\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f‍\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41‍\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f‍\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d‍\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f‍\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82‍\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87‍\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68‍\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68‍\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38‍\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68‍\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26‍\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68‍\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68‍\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68‍\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68‍\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68‍\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39‍\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68‍\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68‍\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68‍\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e‍\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d‍\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68‍\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37‍\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68‍\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68‍\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68‍\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68‍\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86‍\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c‍\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5‍\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45‍\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46‍\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e‍\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e‍\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f‍\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b‍\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3‍\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3‍\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4‍\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca‍\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81‍\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6‍\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f‍\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69‍\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69‍\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38‍\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69‍\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26‍\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69‍\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69‍\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69‍\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69‍\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69‍\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39‍\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69‍\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69‍\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69‍\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e‍\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d‍\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69‍\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37‍\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69‍\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69‍\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69‍\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69‍\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73‍\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c‍\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, ' ');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '"');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n","/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n","/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof text === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/</g, '<');\n\n // Encode >\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '"')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm,
|